boost :: ptr_vector vs. std :: vector <std :: unique_ptr <t>&gt;?</std :: unique_ptr <t>

时间:2013-02-07 21:03:56

标签: c++ pointers boost vector

他们也做类似的事情。

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

哪种情况是首选?

1 个答案:

答案 0 :(得分:6)

我希望std::vector<std::unique_ptr<T>>有几个原因:

  1. 类型安全 - 虽然boost::ptr_vector已经很好地抽象了这一点,ptr_vector仍然按照std::vector<void*>实施。{/ li>
  2. 清除对自定义删除工具的支持 - 我认为您可以使用boost::ptr_vector获取自定义删除行为,但使用std::unique_ptr时支持更清晰(和明确)。
  3. 它是标准的,并且得到兼容的C ++ 11编译器的良好支持。