find_end
シーケンスから特定の値をもつ要素を見つけます。
マッチする部分要素のうち、最後方のシーケンスの先頭を返します。
この関数はソートされていないシーケンスでも有効に機能します。
find_end のサンプルコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<char> v1, v2;
vector<char>::iterator i;
for (int k = 0; k < 3; k++) {
for (int j = 0; j < 12; j++) {
v1.push_back('A' + j);
}
}
for (i = v1.begin(); i != v1.end(); ++i) {
cout << *i;
}
cout << endl;
v2.push_back('G');
v2.push_back('H');
v2.push_back('I');
i = find_end(v1.begin(), v1.end(), v2.begin(), v2.end());
while (i != v1.end()) {
cout << *i;
++i;
}
cout << endl;
return 0;
}
実行結果は次の通りです。
./a.out
ABCDEFGHIJKLABCDEFGHIJKLABCDEFGHIJKL
GHIJKL
GHI というシーケンスは、この他にも二ヶ所にありますが、一番最後に現れる部分が返されています。