2011-04-13 116 views
3

這三個是分別來自Qt,STL和Boost的共享指針類。他們似乎在功能上是相同的,所以我很困惑:QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr

  1. 他們每個人的優缺點是什麼?
  2. 爲什麼Boost和Qt版本甚至存在 - 它已經在STL中,爲什麼要自己創建?
  3. 我應該如何選擇使用哪一個?
+2

它不是「已經在STL中」。 TR1基於其Boost上的shared_ptr。 http://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1#Smart_pointers。我不知道Qt。 – 2011-04-13 04:47:28

+1

因爲我不熟悉QT,所以不能保證答案,但是... 1.始終更喜歡STL版本,除非您知道它有影響您的錯誤。 2.升級版本在其他版本之前存在**年**,STL版本完全基於升級版本。 3.參見#1。 – ildjarn 2011-04-13 04:53:38

回答

7

here爲您的問題的答案。

+0

謝謝,這是我正在尋找的非常全面的比較。 – Septagram 2011-04-14 04:10:00

7
  1. QSharedPointer需要Qt,shared_ptr是標準和便攜式
  2. std::shared_ptrboost::shared_ptr標準的更換(即升壓一個來到第一,併成爲標準)
  3. 不要使用QSharedPointer除非你有一個需要它的Qt類。如果您有tr1或C++ 0x實現,請使用std::shared_ptr,否則使用boost::shared_ptr
+0

我不認爲這回答他的任何問題,似乎我是唯一的問題 – zkunov 2011-04-13 06:14:16

+0

由於沒有長時間的歷史討論,他們每個人都簡潔地陳述了當前的事態。然而,隨意不同意任何一點。 – 2011-04-13 06:40:36

+0

噢,這是正確的,我同意,第二個想法我認爲它部分回答,我可能反應過度了一點,但那是因爲我想看到一些特定的重要事情給我。 – zkunov 2011-04-13 08:18:12

相關問題