【发布时间】:2018-09-30 01:06:11
【问题描述】:
我得到了一段代码,它使用 std::set 来保存一堆指针。
我用它来确保每个指针在我的容器中只会出现一次。
然后,我听说 std::unique_ptr 确保指针在我的整个代码中只存在一次,而这正是我所需要的。
所以我的问题很简单,我应该将容器类型更改为 std::vector 吗?或者它不会改变任何留下 std::set 的东西?
【问题讨论】:
-
std::unique_ptr 不能确保只有一个指针指向某个地址。
-
是的,但是如果我使用 new std::unique_ptr(new ...()) 或 std::make_unique( ... ) ?
-
容器应该拥有指针指向的对象吗?你甚至首先需要指针吗?
-
你在使用 make_unique 时非常安全。但是你在任何时候都不会得到完全的安全。 IE。
auto x = new xyz(); auto a = unique_ptr(x), b = unique_ptr(x);并且不要使用new创建 unique_ptr,您将失去智能指针给您的优势。 -
Timo,我可以接受新的 xyz() 示例。
标签: c++11 stl unique-ptr