C++ STLのmultimap swap()関数の使い方を徹底解説
本記事では、C++ STLにおけるmultimapのswap()関数の仕組み、構文、および具体的なコード例について詳しく解説します。
C++ STLにおけるmultimapとは?
multimapは、mapコンテナとよく似た連想コンテナの一つです。キー(key)と値(mapped value)の組み合わせからなる要素を、特定の順序で格納することができます。multimapの最大の特徴は、同じキーに対して複数の要素を関連付けられる点です。また、内部のデータは常にキーに基づいて自動的にソートされて管理されます。
multimap::swap()関数とは?
multimap::swap()は、C++ STLに標準で用意されている組み込み関数で、<map>ヘッダファイル内で定義されています。この関数は、2つのmultimapコンテナの内容を丸ごと入れ替えるために使用されます。両コンテナのサイズが異なっていても、その内容を問題なく交換できるのが特徴です。
swap()関数が呼び出されると、引数として別のmultimapコンテナを受け取り、呼び出し元のコンテナと引数で渡されたコンテナの内容を相互に入れ替えます。
構文
multimap_name.swap(multimap& multimap_name2);
パラメータ
この関数は以下のパラメータを受け取ります。
multimap_name2 − 内容を入れ替えたい、もう一方のmultimapコンテナのオブジェクトです。
戻り値
この関数は何も値を返しません(void型)。
入力例
std::multimap<char, int> odd, eve;
odd.insert(make_pair('a', 1));
odd.insert(make_pair('b', 3));
odd.insert(make_pair('c', 5));
eve.insert(make_pair('d', 2));
eve.insert(make_pair('e', 4));
eve.insert(make_pair('f', 6));
odd.swap(eve);
出力
Odd: d: 2 e: 4 f: 6 Eve: a: 1 b: 3 c: 5
使用例
#include<iostream>
#include<map>
using namespace std;
int main(){
multimap<int,int> mul_1;
multimap<int,int> mul_2;
// 要素を走査するためのイテレータを宣言
multimap<int,int>::iterator i;
// multimap1に要素を挿入
mul_1.insert({1,10});
mul_1.insert({2,20});
mul_1.insert({3,30});
mul_1.insert({4,40});
mul_1.insert({5,50});
// multimap2に要素を挿入
mul_2.insert({6,60});
mul_2.insert({7,70});
mul_2.insert({8,80});
mul_2.insert({9,90});
// swapを呼び出して要素を入れ替える
mul_1.swap(mul_2);
// multimap1の要素を表示
cout<<"Elements in multimap1 are: "<<"\n";
for(i = mul_1.begin(); i != mul_1.end(); i++){
cout<<(*i).first<<" "<<(*i).second<<"\n";
}
// multimap2の要素を表示
cout<<"\nElements in multimap2 are: ";
for(i = mul_2.begin(); i != mul_2.end(); i++){
cout<<(*i).first<<" "<<(*i).second<<"\n";
}
}
出力
上記のコードを実行すると、以下のような出力が得られます。
Elements in multimap1 are: 6 60 7 70 8 80 9 90 Elements in multimap2 are: 1 10 2 20 3 30 4 40 5 50
まとめ
swap()関数を使えば、2つのmultimapコンテナの内容を簡単かつ効率的に入れ替えることができます。要素を一つずつコピーするのではなく、内部構造を直接交換するため処理が高速で、サイズが異なるコンテナ同士でも問題なく動作します。大量のデータを扱う場合にも有用な関数なので、ぜひ活用してみてください。
-
【C++ STL】multisetのinsert()関数の使い方とサンプルコードを解説
C++ STLのmultiset(マルチセット)コンテナにおけるinsert()関数は、新しい要素をコンテナへ挿入するためのメンバ関数です。単に値を指定して挿入する形式と、挿入位置のヒントとなるイテレータを指定する形式があり、状況に応じて使い分けられます。multisetは重複した値を許可し、挿入された要素は常に自動的にソートされた状態で保持されるという特徴を持っています。 使用する主なメンバ関数 ms.size() … マルチセットに現在格納されている要素数を返します。 ms.insert(値) … 指定した値をマルチセットに挿入し、挿入された要素を指すイテレータを返します。 ms.ins
-
C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説
swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s