C/C++ 入門

ホーム > STL の使い方 > swap_ranges

swap_ranges

シーケンス内の指定した範囲を交換します。

swap は内容全体を交換したわけですが、 swap_ranges では交換する範囲を指定できます。

swap_ranges のサンプルコード

最初の vector ではスワップ範囲の開始と終わりを指定しています。これでスワップサイズが決まるので、 もうひとつの vector ではスワップ開始点のみを指定します。

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

int main() {

    vector<char> v1, v2;
    vector<char>::iterator i;

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

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

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

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

    swap_ranges (v1.begin()+3, v1.begin()+8, v2.begin()+10);

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

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

    return 0;

}

この実行結果は次のようになりました。

$ ./a.out
abcdefghijklmnopqrst
ABCDEFGHIJKLMNOPQRST
abcKLMNOijklmnopqrst
ABCDEFGHIJdefghPQRST
ホーム > STL の使い方 > swap_ranges