boost::ptr_vector 与 std::vector<std::unique_ptr<T>>? [关闭]
Posted
技术标签:
【中文标题】boost::ptr_vector 与 std::vector<std::unique_ptr<T>>? [关闭]【英文标题】:boost::ptr_vector vs. std::vector<std::unique_ptr<T>>? [closed] 【发布时间】:2013-02-07 21:03:55 【问题描述】:他们做类似的事情。
在两者之间选择时应该考虑什么?
在哪种情况下是首选?
【问题讨论】:
我认为您需要提出比“更好”更客观的要求。 取决于“更好”的含义。后者不需要外部依赖,但前者可能更易于使用(取决于您对“更简单”的定义:])。 链接:***.com/questions/9469968/… 可能重复***.com/q/1374840/318716 【参考方案1】:我更喜欢std::vector<std::unique_ptr<T>>
有几个原因:
-
类型安全——虽然这在
boost::ptr_vector
中对您来说已经很好地抽象了,但ptr_vector
仍然以std::vector<void*>
的形式实现。
对自定义删除器的明确支持 -- 我认为您可以使用 boost::ptr_vector
获得自定义删除器行为,但使用 std::unique_ptr
时支持更清晰(和明确)。
它是标准的,并且受到兼容的 C++11 编译器的良好支持。
【讨论】:
我还要补充一点,vector<unique_ptr>
是标准。人们知道它是什么。大多数人可能不知道boost::ptr_vector
以上是关于boost::ptr_vector 与 std::vector<std::unique_ptr<T>>? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
boost::ptr_vector 和 boost::any 的问题
如何从 boost::ptr_vector 中删除“this”
std::vector 与 std::list 与 std::slist 的相对性能?