将一个STL容器的内容复制到另一个容器

时间:2011-01-12 05:58:35

标签: c++

如何从现有的副本创建unordered_map的副本?我可以使用赋值运算符,还是需要逐个迭代? 另外,我使用shared_ptr作为地图中的值。我需要特别小心,因为它是shared_ptr?

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

感谢。

2 个答案:

答案 0 :(得分:1)

请参阅:MSDN std::unordered_map::operator=

首先删除map2的内容,然后将map1的内容复制并放入map2。我没有看到在那里有一个shared_ptr的问题。

答案 1 :(得分:1)

是的,你可以。

关于shared_ptr,如果希望复制的指针指向相同的值,则为no。如果你想要两个单独的副本(深层复制),那么你需要自己进行复制。