2013-02-07 169 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

相關問題