C/C++ 入門

ホーム > STL の使い方 > mismatch

mismatch

二つのシーケンスで要素が異なる箇所の先頭を返します。

戻り値は、比較対象となり相違点が検出された箇所を示す双方のシーケンスに対するイテレータの pair です。

この関数はソートされていないシーケンスでも有効に機能します。

mismatch のサンプルコード

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {

    vector<char> v1, v2;

    v1.push_back ('A');
    v1.push_back ('B');
    v1.push_back ('C');
    v1.push_back ('D');
    v1.push_back ('E');

    v2.push_back ('A');
    v2.push_back ('B');
    v2.push_back ('x');
    v2.push_back ('D');
    v2.push_back ('E');

    pair<vector<char>::iterator, vector<char>::iterator> i;
    i = mismatch (v1.begin(), v1.end(), v2.begin());

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

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

    return 0;

}

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

 
$ ./a.out
CDE
xDE
ホーム > STL の使い方 > mismatch