C++的STL模板的adjacent

    xiaoxiao2021-03-25  87

    adjacent_find         //用来查找连续两个相等的或者符合方法的

    #include<iostream> #include<cstdio> #include<string> #include <vector> #include<algorithm> using namespace std; /***************************************** //所有容器适用(线性的) adjacent_find(b,e); adjacent_find(b,e,p); 用来查找连续两个相等的或者符合方法的 如果是已序区间 则选用已序区间查找算法 binary_search() includes() lower_bound() upper_bound() *****************************************/ /************************************************************************************* std::adjacent_find() 所有容器适用 algorithm -------------------------------------------------------------------------------------- template <class ForwardIterator> ForwardIterator adjacent_find ( ForwardIterator first, ForwardIterator last ); template <class ForwardIterator, class BinaryPredicate> ForwardIterator adjacent_find ( ForwardIterator first, ForwardIterator last, BinaryPredicate pred ); //eg: template <class ForwardIterator> ForwardIterator adjacent_find ( ForwardIterator first, ForwardIterator last ) { if (first != last) { ForwardIterator next=first; ++next; while (next != last) { if (*first == *next) // or: if (pred(*first,*next)), for the pred version return first; else{++first;++next;} } } return last; } *************************************************************************************/ bool myfunction (int i, int j) { return (i==j*2); } int main() { int myints[] = {10,20,30,30,40,20,10,20}; vector<int> myvector (myints,myints+8); vector<int>::iterator it; for(it=myvector.begin();it!=myvector.end();++it) cout<<*it<<" "; cout<<endl; // using default comparison: it = adjacent_find (myvector.begin(), myvector.end()); if (it!=myvector.end()) cout << "the first consecutive repeated elements are: " << *it << endl; //using predicate comparison: it = adjacent_find (myvector.begin(), myvector.end(), myfunction); if (it!=myvector.end()) cout << "the second consecutive repeated elements are: " << *it << endl; return 0; } /***** Output 10 20 30 30 40 20 10 20 the first consecutive repeated elements are: 30 the second consecutive repeated elements are: 40 */

    转载请注明原文地址: https://ju.6miu.com/read-34490.html

    最新回复(0)