C/C++ 入門

ホーム > STL の使い方 > copy_backward

copy_backward

copy_backward は copy に似ているようで、少し動作がわかりにくいところがあるので注意が必要です。

どこが分かりにくいか、というとコピー先の場所の指定が少々直感的でない(ように私は思います)。

copy_backward の利用例・サンプル

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

int main() {

    vector<char> v;
    vector<char>::iterator i;

    for (int j=0; j<20; j++) {
        v.push_back ('a' + j);
    }

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

    copy_backward (v.begin(), v.begin()+5, v.end()-3);

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

    return 0;

}

上記コードの実行結果は以下の通り。

$ ./a.out
abcdefghijklmnopqrst
abcdefghijklabcderst

このように、v.begin() から5つ分の要素が、v.end()から 3 引いた場所に後方に詰めるようにコピーされていることが確認できますね。

ホーム > STL の使い方 > copy_backward