boost :: ptr_vector vs. std :: vector <std :: unique_ptr <T >>?

use*_*376 4 c++ boost pointers vector

他们做类似的事情.

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

哪种情况是首选?

Cha*_*had 6

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

  1. 键入安全-尽管这是很好的抽象你boost::ptr_vector,ptr_vector是在以下方面仍实现std::vector<void*>.
  2. 清除对自定义删除器的支持 - 我认为您可以使用a获得自定义删除行为boost::ptr_vector,但使用时支持更清晰(和显式)std::unique_ptr.
  3. 它是标准的,并且得到兼容的C++ 11编译器的良好支持.