是否有可能使用std::map::insert
或std::copy
将std::map
std::unique_ptr
深层复制到另一个?{/ p>
我有以下内容:
class MyObject {}
std::map<int32_t, std::unique_ptr<MyObject>> entries1;
// Populate entries1
// ...
std::map<int32_t, std::unique_ptr<MyObject>> entries2;
entries2.insert(entries1.begin(), entries1.end());
显然,使用简单的插入不起作用,因为std::unique_ptr
是不可复制的:
尝试引用已删除的功能
在这个答案How can I copy one map into another using std::copy?中,自定义插入器与std::copy
一起被提取,但我真的不知道如何在我的上下文中使用它。
手动实现(在循环中迭代和复制每个对象)是唯一的解决方案吗? E.g:
for (const auto &entry : entries1)
{
entries2.insert({ entry.first, std::make_unique<MyObject>(*entry.second) });
}