2011-01-12 10 views
-1

どのようにして既存のものからunordered_mapのコピーを作成できますか?代入演算子を使用できますか、それとも順番に反復処理する必要がありますか? また、shared_ptrをマップの値として使用しています。 shared_ptrなので、特別な注意を払う必要がありましたか?STLコンテナの内容を別のSTLコンテナにコピーする

typedef unordered_map<string, shared_ptr<classA>>MAP1; 
MAP1 map1; 
map1["abc"] = make_shared<classA>(); 
MAP2 map2 = map1; ?? //can I use assignment operator?? 

ありがとうございます。

+8

私は通常このように答えませんが、試しましたか? – GManNickG

+0

これはそれと同じように、割り当てではありません。実際にはMAP2のコンストラクタへの呼び出しです...しかし、ここでは誰もあなたの質問に答えるのに苦労するでしょう。実際には、大文字の識別子を使用することを控えてください。通常は、マクロ用に予約されています。 –

+0

私はあなたが標準テンプレートライブラリを意味すると思います(http://stackoverflow.com/a/5205571/834176)。 –

答えて

1

見る:MAP2のMSDN std::unordered_map::operator=

コンテンツが最初に除去され、次いでMAP1の内容がコピーされ、MAP2に入れました。私はそこにshared_ptrを持つことに問題は見られません。

1

はいできます。

shared_ptrに関して、コピーされたポインタが同じ値を指すようにしたい場合は、noを指定します。 2つの別々のコピー(ディープコピー)が必要な場合は、自分でコピーする必要があります。

関連する問題