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;
}

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


相关文章
|
2天前
|
存储 C++ 容器
C++:STL - set & map
C++:STL - set & map
11 4
|
3天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
10 0
|
4天前
|
存储 Serverless C++
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
8 1
|
5天前
|
存储 设计模式 算法
【C++/STL】stack和queue(容器适配器、优先队列、双端队列)
【C++/STL】stack和queue(容器适配器、优先队列、双端队列)
12 1
|
5天前
|
存储 编译器 C++
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
5 0
|
5天前
|
算法 C++ 容器
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
10 0
|
11天前
|
存储 算法 C++
详解C++中的STL(标准模板库)容器
【4月更文挑战第30天】C++ STL容器包括序列容器(如`vector`、`list`、`deque`、`forward_list`、`array`和`string`)、关联容器(如`set`、`multiset`、`map`和`multimap`)和容器适配器(如`stack`、`queue`和`priority_queue`)。它们为动态数组、链表、栈、队列、集合和映射等数据结构提供了高效实现。选择合适的容器类型可优化性能,满足不同编程需求。
|
17天前
|
存储 缓存 算法
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
|
17天前
|
存储 算法 程序员
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
|
18天前
|
存储 搜索推荐 C++
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构