概要
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,