C/C++ 入門

ホーム > STL の使い方 > find_end

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<26; j++) {
            v1.push_back ('A' + j);
        }
    }

    for ( i=v1.begin(); i != v1.end(); ++i) {
        cout << *i ;
    }
    cout << endl;

    v2.push_back ('H');
    v2.push_back ('I');
    v2.push_back ('J');

    i = find_end (v1.begin(), v1.end(), v2.begin(), v2.end());

    while ( i != v1.end () ) {
        cout << *i ;
        ++i;
    }
    cout << endl;

    return 0;
}

実行結果は次の通りです。

$ ./a.out
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
HIJKLMNOPQRSTUVWXYZ

HIJ というシーケンスは、この他にも二ヶ所にありますが、一番最後に現れる部分が返されています。

ホーム > STL の使い方 > find_end