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 を利用することで、 それぞれの内容が交換されたことがわかります。