2013-02-07 257 views
4

他们做类似的事情。boost :: ptr_vector vs. std :: vector <std :: unique_ptr <T>>?

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

在哪种情况下是首选?

+3

我认为你需要问一个比“更好”更客观的东西。 –

+0

取决于你的意思是“更好”。后者不需要外部依赖,但前者可能更简单易用(取决于您对“简单”的定义:])。 – GManNickG

+0

链接:http://stackoverflow.com/questions/9469968/stl-container-with-stdunique-ptrs-vs-boostptr-container –

回答

5

我宁愿std::vector<std::unique_ptr<T>>有以下几个原因:

  1. 类型安全 - 尽管这是boost::ptr_vector不错抽象的你,ptr_vector中的std::vector<void*>方面仍然实施。
  2. 明确支持自定义删除程序 - 我认为您可以通过boost::ptr_vector获得自定义删除程序行为,但在使用std::unique_ptr时支持更清晰(明确)。
  3. 它是标准的,并且被兼容的C++ 11编译器所支持。
+0

我也会添加'矢量'是_standard_。人们知道它是什么。大多数人可能不知道'boost :: ptr_vector' – David

相关问题