文法:
#include <algorithm> forward_iterator adjacent_find( forward_iterator start, forward_iterator end ); forward_iterator adjacent_find( forward_iterator start, forward_iterator end, BinPred pr );
adjacent_find()関数はstartとendの間にある二つの連続した同じ要素を探します。二項述語prが与えられた場合、同値判定にそれを用います。
見つかった場合、二つの要素の最初の要素を指すiteratorを返します。見つからなかった場合、iteratorはendを指します。
例えば、次のコードでは0から10の整数を要素として持ち7が二つ連続して出現しているvectorを生成し、adjacent_find()で7の組の位置を探しています:
vector<int> v1; for( int i = 0; i < 10; i++ ) { v1.push_back(i); // 二つ目の7を挿入 if( i == 7 ) { v1.push_back(i); } } vector<int>::iterator result; result = adjacent_find( v1.begin(), v1.end() ); if( result == v1.end() ) { cout << "v1では隣接した要素は見つかりませんでした" << endl; } else { cout << *result << "から始まる隣接した要素を発見" << endl; }
関連トピック: find, find_end, find_first_of, find_if, unique, unique_copy