如何从现有的副本创建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??
感谢。
答案 0 :(得分:1)
请参阅:MSDN std::unordered_map::operator=
首先删除map2的内容,然后将map1的内容复制并放入map2。我没有看到在那里有一个shared_ptr的问题。
答案 1 :(得分:1)
是的,你可以。
关于shared_ptr,如果希望复制的指针指向相同的值,则为no。如果你想要两个单独的副本(深层复制),那么你需要自己进行复制。