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

C++ STLのmultimap::operator=(代入演算子)の使い方を徹底解説

この記事では、C++ STLにおけるmultimapの等号「=」演算子(multimap::operator=)の動作、構文、および具体的な使用例について詳しく解説します。

C++ STLにおけるmultimapとは?

multimapは連想コンテナの一種で、mapコンテナとよく似た性質を持っています。キー値とマップ値の組み合わせからなる要素を、特定の順序で格納することができます。multimapの最大の特徴は、同じキーに対して複数の要素を関連付けできるという点です。また、コンテナ内のデータは、内部で常にキーに基づいて自動的にソートされます。

multimap::operator=(等号演算子)とは?

multimap::operator=は代入演算子です。この演算子を使用すると、あるmultimapコンテナから別のmultimapコンテナへ要素をコピーできます。その際、コピー先のコンテナが保持していた既存の内容はすべて上書きされることに注意してください。

構文

multiMap_name1 = multimap_name2;

パラメータ

演算子の左辺にはコピー先のmultimap、右辺にはコピー元のmultimapを指定します。右辺のmultimapの内容が、左辺のmultimapにコピーされます。

戻り値

この演算子には戻り値はありません。

入力例

multimap<int, int> newmap, themap;
newmap.insert({1, 20});
newmap.insert({2, 30});
themap = newmap;

出力例

themap = 1:20 2:30

サンプルコード

以下に、multimap::operator=の実際の動作を確認できる完全なサンプルコードを示します。

#include<iostream>
#include<map>
using namespace std;
int main(){
    multimap<int,char> mul_1;
    multimap<int,char> mul_2;
    // 要素を走査するためのイテレータを宣言
    multimap<int,char>::iterator i;
    // multimap1に要素を挿入
    mul_1.insert(make_pair(0,'a'));
    mul_1.insert(make_pair(1,'b'));
    mul_1.insert(make_pair(2,'c'));
    mul_1.insert(make_pair(3,'d'));
    // multimap2に要素を挿入
    mul_2.insert(make_pair(4,'e'));
    mul_2.insert(make_pair(5,'f'));
    mul_2.insert(make_pair(6,'g'));
    // = 演算子を使用してmul_2の内容をmul_1にコピー
    mul_1 = 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: "<<"\n";
    for(i = mul_2.begin(); i != mul_2.end(); i++) {
        cout<<(*i).first<<" "<<(*i).second<<"\n";
    }
}

出力結果

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

Elements in multimap1 are:
4 e
5 f
6 g
Elements in multimap2 are:
4 e
5 f
6 g

この結果から、代入演算子「=」を実行した後、mul_1の元の内容(0 a〜3 d)は失われ、mul_2の内容(4 e〜6 g)で完全に上書きされていることがわかります。このように、multimap::operator=を使えば、コンテナ間で簡単かつ確実に要素をコピーすることができます。

  1. C++ STLにおけるmapの代入演算子「=」の使い方を解説

    本記事では、C++ STLにおけるmapコンテナの代入演算子「=」(operator=)について、その動作・構文・具体的な使用例を詳しく解説します。C++ STLにおけるmapとは?mapはC++ STLに用意されている連想コンテナの一つで、キー値と対応するマップされた値(要素)の組み合わせからなるデータを、特定の順序で格納することができます。mapコンテナ内部では、データは常にキーに基づいて自動的にソートされて管理されます。また、格納された各要素には、それぞれ一意なキーを介してアクセスします。mapの代入演算子「=」とは?map::operator=は代入演算子であり、あるコンテナの要素を別

  2. C++のSTLでマルチマップ(multimap)を実装するプログラムの解説

    マルチマップ(multimap)は、C++の標準テンプレートライブラリ(STL)が提供する連想コンテナの一つで、複数の要素が同じキーを持てるという点を除けば、マップ(map)とよく似ています。マルチマップでは、キー値とマップ値のペアそのものが一意である必要があります。使用する主な関数mm::find() – マルチマップ内でキー値 b を持つ要素を検索します。見つかった場合はその要素へのイテレータを、見つからない場合は end() イテレータを返します。mm::erase() – 指定したキー値(またはイテレータが指す要素)をマルチマップから削除します。mm::equal_range() –