C/C++ 入門

ホーム > STL の使い方 > swap

swap

二つの vector の中身を入れ替える方法です。

swap を利用します。

swap のサンプルコード

#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<10; j++) {
        v2.push_back ('A' + j);
    }

    // サイズと中身のダンプ
    cout << "v1 (size:" << v1.size() << ") ";
    i = v1.begin();
    while ( i != v1.end()) {
        cout << *i ;
        ++i;
    }
    cout << endl;

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

    swap (v1, v2);

    // サイズと中身のダンプ
    cout << "v1 (size:" << v1.size() << ") ";
    i = v1.begin();
    while ( i != v1.end()) {
        cout << *i ;
        ++i;
    }
    cout << endl;

    cout << "v2 (size:" << v2.size() << ") ";
    i = v2.begin();
    while ( i != v2.end()) {
        cout << *i ;
        ++i;
    }
    cout << endl;
    return 0;

}

実行結果は次の通り。

$ ./a.out
v1 (size:20) abcdefghijklmnopqrst
v2 (size:10) ABCDEFGHIJ
v1 (size:10) ABCDEFGHIJ
v2 (size:20) abcdefghijklmnopqrst

もともとサイズがそれぞれ 20, 10 であるベクタ v1, v2 に対して swap を利用することで、 それぞれの内容が交換されたことがわかります。

ホーム > STL の使い方 > swap