パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C++ swap(2値の入れ替え)

概要

C言語の入門書だと、2つの変数a, bを入れ替えるときに一時変数tmpを用いて、

int tmp = a;
a = b;
b = tmp;

とするような方法が紹介されています。プログラミングの仕組みを知る上では重要ですが、毎度これをやるのは面倒です。
そこで、デフォルトで用意されているstd::swap関数を使う方法を紹介します。


例1:2変数a, bの入れ替え

std::swap(a, b)

とすれば、変数aとbを入れ替えられます(公式ドキュメント:swap - cpprefjp C++日本語リファレンス)。

ソースコード

#include <iostream>

int main() {
  int a = 4, b = -1;

  // 入れ替え前
  std::cout << "a = " << a << ", b = " << b << std::endl;

  std::swap(a, b);

  // 入れ替え後
  std::cout << "a = " << a << ", b = " << b << std::endl;

  return 0;
}

実行結果

a = 4, b = -1
a = -1, b = 4



例2:vectorの順番を入れ替える

例1と同じように配列の要素も入れ替えられます。

ソースコード

#include <iostream>
#include <vector>

int main() {
  std::vector<int> v{1, 2, 3};

  // 入れ替え前
  for (int i = 0; i < v.size(); i++)
    std::cout << v[i] << ", ";
  std::cout << std::endl;

  std::swap(v[0], v[2]);

  // 入れ替え後
  for (int i = 0; i < v.size(); i++)
    std::cout << v[i] << ", ";
  std::cout << std::endl;

  return 0;
}

実行結果

1, 2, 3, 
3, 2, 1,