【问题标题】:boost::ptr_vector vs. std::vector<std::unique_ptr<T>>? [closed]boost::ptr_vector 与 std::vector<std::unique_ptr<T>>? [关闭]
【发布时间】:2013-02-07 21:03:55
【问题描述】:

他们做类似的事情。

在两者之间选择时应该考虑什么?

在哪种情况下是首选?

【问题讨论】:

标签: c++ pointers boost vector


【解决方案1】:

我更喜欢std::vector&lt;std::unique_ptr&lt;T&gt;&gt; 有几个原因:

  1. 类型安全——虽然这在boost::ptr_vector 中对您来说已经很好地抽象了,但ptr_vector 仍然以std::vector&lt;void*&gt; 的形式实现。
  2. 对自定义删除器的明确支持 -- 我认为您可以使用 boost::ptr_vector 获得自定义删除器行为,但使用 std::unique_ptr 时支持更清晰(和明确)。
  3. 它是标准的,并且受到兼容的 C++11 编译器的良好支持。

【讨论】:

  • 我还要补充一点,vector&lt;unique_ptr&gt;标准。人们知道它是什么。大多数人可能不知道boost::ptr_vector
猜你喜欢
  • 2018-02-02
  • 2019-11-07
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2017-09-01
相关资源
最近更新 更多