C++STL算法篇之查找算法(下)

简介: C++STL算法篇之查找算法(下)

统计查找

count(区间查找)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
  vector<int> m = { 1, 1, 1, 1,1 ,2, 4 };
  auto it7 = count(m.begin(), m.end(), 1);
  //统计在vector 容器中1出现的次数
  cout << it7 << endl << endl;
  return 0;
}

count_if(条件查找)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{ 
  vector<int> m = { 1, 1, 1, 1,1 ,2, 4 };
  auto it8 = count_if(m.begin(), m.end(), [](int a) {return a > 1; });
  //统计大于1的次数
  cout << it8 << endl;
  return 0;
}

equal(判断是否相等)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
#include<iomanip> //流
using namespace std;
int main()
{
  int arr1[] = { 1, 2 };
  int arr2[] = { 1, 2 };
  cout << boolalpha << equal(arr1, arr1 + 2, arr2, arr2 + 2) << endl;
  //用boolalpha的话, 要使用iomanip头文件 ,打印结果是true或者false
  //
  return 0;
}

有序查找

binary_search(二分查找)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
#include<iomanip> //流
using namespace std;
int main()
{
  vector<int> mm = { 1, 2, 4 };
  cout << boolalpha << binary_search(mm.begin(), mm.end(), 3);
  return 0;
}

upper_bound(查找第一个大于查找的值)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
#include<iomanip> //流
using namespace std;
int main()
{
  vector<int> mm = { 1, 2, 3, 4 };
  //第一个大于2的数
  cout << *upper_bound(mm.begin(), mm.end(), 2);
  return 0;
}

lower_bound (小于查找值)

方法跟上面一样的

equal_range(区间比较,大于等于)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
#include<iomanip> //流
using namespace std;
int main()
{
  vector<int> h = { 3, 8, 9, 0, 4, 3 , 4, 10, 100, 6};
  //大于等于
  //first:等于值, second:大于值
  cout << *equal_range(h.begin(), h.end(), 6).first<< endl;
  cout << *equal_range(h.begin(), h.end(), 8).second << endl;
  return 0;
}

注意:以上查找算法应该要做是否能够查找的判定,不能够直接打印,我这里为了方便,省略了这一步


相关文章
|
1月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
69 5
|
1月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
52 1
|
1月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
451 0
高精度算法(加、减、乘、除,使用c++实现)
|
1月前
|
算法 安全 Linux
【C++STL简介】——我与C++的不解之缘(八)
【C++STL简介】——我与C++的不解之缘(八)
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
22 0
|
1月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
1月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
1月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
1月前
|
人工智能 算法 BI
一篇带你速通差分算法(C/C++)
一篇带你速通差分算法(C/C++)
|
1月前
|
人工智能 算法 C++
一篇带你速通前缀和算法(C/C++)
一篇带你速通前缀和算法(C/C++)