【C++】std::swap で2つの変数の値を入れ替える方法

目次

はじめに

C++で、2つの変数 ab の中身を入れ替えたい場合、一時的な変数 temp を使って、

temp = a;
a = b;
b = temp;

と書くのが基本的な考え方です。しかし、この定型的な処理のために、C++の標準ライブラリ <algorithm> には、より簡潔で意図が明確な std::swap という便利な関数が用意されています。

この記事では、swap関数の基本的な使い方を解説します。


swap を使ったサンプルコード

このコードは、2つの整数変数の値を swap を使って入れ替え、その前後で値が変化することを示します。

完成コード

#include <iostream>
#include <algorithm> // std::swap を使うために必要

using namespace std;

int main() {
    int x = 100;
    int y = 200;

    cout << "--- 交換前 ---" << endl;
    cout << "x = " << x << ", y = " << y << endl;

    // std::swapで変数xとyの値を入れ替える
    swap(x, y);
    
    cout << "\n--- 交換後 ---" << endl;
    cout << "x = " << x << ", y = " << y << endl;
    
    return 0;
}

実行結果

--- 交換前 ---
x = 100, y = 200

--- 交換後 ---
x = 200, y = 100

コードの解説

swap(x, y);

  • 機能: 引数として渡された2つの変数 xy の値を、効率的に入れ替えます。
  • 引数の型: intのような基本型だけでなく、std::stringや自作のクラスオブジェクトなど、コピーやムーブが可能なあらゆる型の変数を入れ替えることができます。
  • 仕組み: swapは内部的に参照を使って変数を操作するため、関数呼び出し後、元の変数 xy の値が直接書き換えられます。

まとめ

今回は、C++の<algorithm>ライブラリを使って、2つの変数の値を入れ替えるstd::swap関数を解説しました。

  • <algorithm> ヘッダーをインクルードする。
  • swap(変数1, 変数2) の形で呼び出す。

自前で一時変数を使って実装するよりも、swapを使った方がコードが簡潔になり、「ここでは値の交換を行っている」という意図が明確になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次