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

C++ STLのqueue::swap()関数とは?構文・戻り値・サンプルコードをわかりやすく解説

本記事では、C++ STLにおけるqueue::swap()関数の動作、構文、そして具体的な使用例について詳しく解説します。

C++ STLにおけるqueue(キュー)とは?

queueは、C++ STLで定義されているシンプルなシーケンスコンテナ(データ構造)の一つで、FIFO(First In First Out:先入れ先出し)方式でデータの挿入と削除を行います。キュー内のデータは連続的に格納され、要素はキューの末尾に挿入され、先頭から順に取り除かれます。C++ STLにはあらかじめqueueのテンプレートが用意されており、通常のキューと同じ要領でデータの出し入れを行うことができます。

queue::swap()とは?

queue::swap()は、<queue>ヘッダファイルで宣言されているC++ STLの組み込み関数です。この関数は、2つのキューコンテナの中身を丸ごと入れ替えるために使用されます。引数として1つのパラメータを受け取ります。これは、呼び出し元のキューコンテナと内容を交換したい、もう一方のキューコンテナです。

なお、swap操作は要素を一つずつコピーするのではなく、内部データを直接入れ替えるため、非常に高速に動作するという特徴があります。

構文

myqueue1.swap(myqueue2);

この関数は、中身を入れ替えたい相手となるもう一方のキューコンテナを、1つのパラメータとして受け取ります。

戻り値

この関数は何も返しません(戻り値はvoid型です)。

使用例

入力: queue<int> odd = {1, 3, 5};
      queue<int> eve = {2, 4, 6};
出力:
      Odd: 2 4 6
      Eve: 1 3 5

上記のように、swap()を呼び出すと、oddとeveの2つのキューの中身が完全に入れ替わっていることが確認できます。

サンプルコード

#include <iostream>
#include <queue>
using namespace std;
int main(){
    queue<int> Queue_1, Queue_2;
    for(int i=0 ;i<=5 ;i++){
        Queue_1.push(i);
    }
    for(int i=5 ;i<=10 ;i++){
        Queue_2.push(i);
    }
    //swap関数を呼び出す
    Queue_1.swap(Queue_2);
    cout<<"Queue_1の要素: ";
    while (!Queue_1.empty()){
        cout << ' ' << Queue_1.front();
        Queue_1.pop();
    }
    cout<<"\nQueue_2の要素: ";
    while (!Queue_2.empty()){
        cout << ' ' << Queue_2.front();
        Queue_2.pop();
    }
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Element in Queue_1 are: 5 6 7 8 9 10
Element in Queue_2 are: 0 1 2 3 4 5

このように、Queue_1.swap(Queue_2)を呼び出した後は、Queue_1には元々Queue_2に格納されていた「5〜10」の要素が入り、Queue_2には元々Queue_1に格納されていた「0〜5」の要素が入っています。2つのキューの内容が効率的に入れ替わることがわかります。

  1. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス

  2. C++ STL(標準テンプレートライブラリ)のプライオリティキュー徹底解説

    プライオリティキュー(優先度付きキュー)は、優先度を持つ要素のコレクションを格納するための抽象データ型(ADT)です。各要素は優先度に基づいて挿入・削除が行われ、最も優先度の高い要素はいつでも取り出すことができます。スタックやキュー、リストなどの線形データ構造とは異なり、プライオリティキューは要素を格納位置の順序ではなく、優先度に基づいて管理する点が大きな特徴です。C++では、STLの <queue> ヘッダで提供されており、デフォルトでは最大値が先頭に来る構造になっています。プライオリティキューがサポートする主な操作size() — プライオリティキュー内の要素数を返し、サイズを