STL::adjacent_find() 用法

adjacent_find : Searches for two adjacent elements that are either equal or satisfy a specified condition.(查找在序列中相邻且相等或者满足指定条件的两个元素)此算法返回指向两个元素中第一个元素的迭代器。adjacent_find具有线性时间复杂度。

 

Neal: 看如下代码。可以传入指针或者迭代器。默认是检查相邻的是否相等;也可以传入要检查的关系。返回的是指向满足关系的两个元素中的前一个元素的指针或者迭代器。

Code:

// Vector_Learning.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> #include <iostream> #include <algorithm> #include <assert.h> using namespace std; class TwiceOver { public: bool operator()(int val1, int val2) { return val1 == val2/2 ? true : false; } }; int _tmain(int argc, _TCHAR* argv[]) { int ia[] = { 1, 4, 4, 8 }; std::vector<int> vec(ia, ia + 4); int *piter = NULL; vector<int>::iterator iter; piter = adjacent_find(ia, ia + 4); assert(*piter == ia[1]); iter = adjacent_find(vec.begin(), vec.end(), TwiceOver()); assert(*iter == vec[2]); cout<<"ok: adjacent-find() succeeded!"<<endl; system("pause"); return 0; }

 

Output:

ok: adjacent-find() succeeded! 请按任意键继续. . .

你可能感兴趣的:(算法,vector,iterator,output)