C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説


swap()関数とは

C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。

swap()関数の構文

void swap(int variable_name1, int variable_name2);

変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。

例1:swap()関数の基本的な使い方

#include <bits/stdc++.h>
using namespace std;
int main() {
   int x = 35, y = 75;
   printf("Value of x :%d",x);
   printf("\nValue of y :%d",y);
   swap(x, y);
   printf("\nAfter swapping, the values are: x = %d, y = %d", x, y);
   return 0;
}

実行結果

Value of x :35
Value of y :75
After swapping, the values are: x = 75, y = 35

この例では、xとyの値がswap()関数によって入れ替えられ、実行結果からもその動作を確認できます。

例2:参照渡しで実際の変数の値を入れ替える

より実用的なのは、値を参照渡しで関数に渡す方法です。参照渡しを使えば、関数内で行った入れ替えが呼び出し元の実際の変数にも反映されます。以下は、仮引数を参照(int&)として受け取るユーザー定義関数SwapValue()を実装した例です。

#include <stdio.h>
void SwapValue(int &a, int &b) {
   int t = a;
   a = b;
   b = t;
}
int main() {
   int a, b;
   printf("Enter value of a : ");
   scanf("%d", &a);
   printf("\nEnter value of b : ");
   scanf("%d", &b);
   SwapValue(a, b);
   printf("\nAfter swapping, the values are: a = %d, b = %d", a, b);
   return 0;
}

実行結果

Enter value of a : 8
Enter value of b : 28
After swapping, the values are: a = 28, b = 8

このように、仮引数をint&型(参照)として定義することで、関数SwapValue()内でaとbの値を入れ替えると、main()関数側の実際の変数の値も正しく入れ替わります。ユーザーからの入力を受け付けて値を交換できる、実践的なプログラムとなっています。


  1. C++STLのunordered_multimap swap()関数の使い方を解説

    C++ STLのunordered_multimapにおけるswap()関数は、同じサイズ・同じ型の2つのmultimapコンテナ同士で要素を入れ替えるために使用される関数です。この記事では、swap()関数の基本的な使い方を、アルゴリズムとサンプルコードを交えてわかりやすく解説します。アルゴリズムswap()関数を使った処理の流れは以下の通りです。開始 空のmapコンテナ m と m1 を宣言する。 m と m1 の両方に値を挿入する。 swap()関数を実行し、m と m1 の値を入れ替える。 入れ替え後の m の値を出力する。 入れ替え後の m1

  2. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい