gpt4 book ai didi

c++ - 将 std::unique_ptr 插入 boost:ptr_map

转载 作者:太空狗 更新时间:2023-10-29 20:35:04 25 4
gpt4 key购买 nike

我正在将一些旧代码移动到 c++14,它使用了已弃用的 auto_ptr 并且它与 boost:ptr_map 配合得很好,你可以这样做:

auto_ptr<Foo> foo(new Foo);
boost:map_ptr<int, Foo> m;
m.insert(5, foo);

现在,将 auto_ptr 替换为 unique_ptr,它无法编译:

unique_ptr<Foo> foo(new Foo);
boost:map_ptr<int, Foo> m;
m.insert(5, foo); // Does not compile
m.insert(5, move(foo)); // Does not compile either,
// this should be the right thing to do
m.insert(5, move.release()); // Does compile, but isn't exception safe

map_ptr API 不是最新的吗?

根据响应进行编辑,在我的情况下使用 unique_ptr 的映射不是一个好的选择,因为它需要重写大量代码。我真的想让它与 map_ptr 一起工作,我正在处理一些旧代码,我希望进行最少的更改。

最佳答案

我认为在 C++14 中你想要的是这样的:

std::unordered_map<int, std::unique_ptr<Foo>> x;
x.emplace(5, std::make_unique<Foo>());

您不再需要那些旧的 bo​​ost _ptr 容器,它们基本上是缺少可以在容器中安全处理的拥有、零开销指针的解决方法(即 unique_ptr)。

关于c++ - 将 std::unique_ptr 插入 boost:ptr_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44553737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com