cb32a_c++_STL_算法_查找算法_(5)adjacent_find

 

cb32a_c++_STL_算法_查找算法_(5)adjacent_find
adjacent_find(b,e),b,begin(),e,end()
adjacent_find(b,e,p),p-parameter(谓词),函数,条件,规则.连续的两个符合条件的数据
adjacent_find() 算法可以用来搜索序列中两个连续相等的元素。
用 == 运算符来比较连续的一对元素,返回的迭代器指向前两个相等元素中的第一个。
如果没有一对相等的元素,这个算法返回这个序列的结束迭代器。

http://c.biancheng.net/view/576.html

如果是已序区间,可以使用已序区间的查找算法(效率高),比如:set和multiset_关联容器自动排序
binary_search()
includes()
lower_bound()
upper_bound()

*/

 1 /*cb32a_c++_STL_算法_查找算法_(5)adjacent_find
 2 adjacent_find(b,e),b,begin(),e,end()
 3 adjacent_find(b,e,p),p-parameter(谓词),函数,条件,规则.连续的两个符合条件的数据
 4 adjacent_find() 算法可以用来搜索序列中两个连续相等的元素。
 5 用 == 运算符来比较连续的一对元素,返回的迭代器指向前两个相等元素中的第一个。
 6 如果没有一对相等的元素,这个算法返回这个序列的结束迭代器。
 7 
 8 http://c.biancheng.net/view/576.html
 9 
10 如果是已序区间,可以使用已序区间的查找算法(效率高),比如:set和multiset_关联容器自动排序
11 binary_search()
12 includes()
13 lower_bound()
14 upper_bound()
15 
16 */
17 #include <iostream>
18 #include <algorithm>
19 #include <vector>
20 
21 using namespace std;
22 bool doubled(int elem1, int elem2) //返回值是bool,就是谓词
23 {
24     return elem1 * 2 == elem2;
25 }
26 
27 int main()
28 {
29     vector<int> ivec;
30     ivec.push_back(1);
31     ivec.push_back(3);
32     ivec.push_back(3);
33     ivec.push_back(4);
34     ivec.push_back(8);
35     ivec.push_back(5);
36     ivec.push_back(0);
37     for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
38         cout << *iter << ' ';
39     cout << endl;
40 
41     vector<int>::iterator pos;
42     pos = adjacent_find(ivec.begin(), ivec.end());//寻找两个连续相等的数
43     if (pos != ivec.end())
44         cout << "找到了,位置是:" << distance(ivec.begin(), pos) + 1 << endl;
45     else
46         cout << "没有两个连续的相等的数" << endl;
47 
48     pos = adjacent_find(ivec.begin(), ivec.end(), doubled);//doubled就是谓词
49     if (pos != ivec.end())
50         cout << "找到了,符合doubled函数条件。位置是:" << distance(ivec.begin(), pos) + 1 << endl;
51     else
52         cout << "没有两个连续的符合doubled函数条件" << endl;
53 
54     return 0;
55 }

 

posted @ 2020-02-20 20:34  txwtech  阅读(194)  评论(0编辑  收藏  举报