私は、生の代わりにスマートポインタを使いたいと思っています。しかし、stdはstd::auto_ptr
とstd::shared_ptr
のようなものです。 なぜブースト?違いはなんですか?ブーストスマートポインタとスタンダードスマートポインタの違いは何ですか?
答えて
基本的にブーストはshared_ptr
でした。 C++ 11の新しいコンテナクラスの多くは、ずっと前にBoostにあったことに気付くかもしれません。私はこのパターンがC++標準の次の改訂版でも続くことを期待しています。 Boostは、C++ 11を話さない古いC++コンパイラをサポートしています。これは大きな利点です。
なお、std::auto_ptr
は、両方のかなり多くの有用な、代わりstd::shared_ptr
及びstd::unique_ptr
にもたらすC++ 11で推奨されていません。
より具体的には:Boostは、著者がデザイン空間を探索し、実際のユーザーと一緒にライブラリを検証するためのライブラリの遊び場です。C++委員会(そのような著者の多くを特集しています)が来て、働いているものを標準化します。 –
まあ、std::shared_ptr
とboost:shared_ptr
は両方とも参照カウントポインタです。代わりにstd :: auto_ptrは非常に異なった働きをします。 std::shared_ptr
とboost:shared_ptr
の違いは非常に小さく、ほとんどの場合歴史的です。 C++ 11以前は、std::shared_ptr
はなく、boost:shared_ptr
しかありませんでした。 C++ 11の設計時にはboost:shared_ptr
をモデルとして採用しました。
あなたのすべてのスマートポインタには、ポイントのライフタイム管理が正しく行われていることを確認する独自のメカニズムがあります。 auto_ptr
は、複数のインスタンスがauto_ptr
の場合、そのうちの1つだけが実際のオブジェクトへのポインタを含むように機能します。別のauto_ptr
からauto_ptr
を作成すると、新しいものはオブジェクトを指し、古いものはNULL
になります。一方、shared_ptr
では、同じオブジェクトを共有する複数のshared_ptr
インスタンスが存在する可能性があります。最後のオブジェクトがスコープ外になった場合にのみ、そのオブジェクトのみが削除されます。
C++ 11にも同様のポインタがありますstd::auto_ptr
と入力してください。具体的にはstd::unique_ptr
ですが、重要な違いがいくつかあります。 std::auto_ptr to std::unique_ptrも参照してください。
参考文献:
も参照してください:
- Difference between boost::shared_ptr and std::shared_ptr from the standard <memory> file [StackOverflowの]
- Differences between different flavours of shared_ptr [StackOverflowの]
- 1. difftimeと ' - 'の違いは何ですか?
- 2. A`と ``の違いは何ですか[:] `
- 3. `&`と `ref`の違いは何ですか?
- 4. バックスティックと$()の違いは何ですか?
- 5. `##`と `hashCode`の違いは何ですか?
- 6. "$^N"と "$ +"の違いは何ですか?
- 7. #{} $ {}と%{}の違いは何ですか?
- 8. typedefとの違いは何ですか?
- 9. %Qと%{}の違いは何ですか?
- 10. `==`と `is`の違いは何ですか?
- 11. $と$$の違いは何ですか?
- 12. NodeJS:「./ ..」と「..」の違いは何ですか?
- 13. $ dirtyと$ invalid:違いは何ですか?
- 14. Backbone.jsとPusherapp - 違いは何ですか?
- 15. libspeとlibspe2?違いは何ですか?
- 16. リストと何か([_])と何か(_)の違い
- 17. decodeURIComponentとunescapeの違いは何ですか?unescapeの問題は何ですか?
- 18. コロンの配置の違いは何ですか:何かと何か:
- 19. GoogleのDremelとは何ですか? Mapreduceとの違いは?
- 20. 重要な違いは何ですかext2-ext3とext3-ext4の違いは何ですか?
- 21. 「アソシエーション」と「リレーション」という用語の違いは何ですか?
- 22. グロムとは何ですか? mapPartitionsとの違いは?
- 23. AndroidでThread.run()とHandler.post()とServiceの違いは何ですか?
- 24. Androidでは、MotionEventのgetAction()とgetActionMasked()の違いは何ですか?
- 25. XSLT属性の違いとは何か
- 26. nHibernateのICriteriaとICriterionの違いと利点は何ですか?
- 27. BasicHttpsBindingとWsHttpBindingのトランスポートセキュリティとの違いは何ですか?
- 28. MSBuildの@と$と%の違いは何ですか?
- 29. middlegenとXDocletの使用とその違いは何ですか?
- 30. C++の "new"と "malloc"と "calloc"の違いは何ですか?
のstd :: auto_ptrをは 'のstd :: shared_ptr'など(STD'を除き、:: auto_ptrは同じように、 –
新しいスマートポインタところで廃止されました')は、Boostで同じ名前の構造の後にモデル化されました。 –
あなたが言及したそれらのSO項目の日付をチェックしてください。 'boost :: shared_ptr'のようないくつかの' boost 'スマートポインタは、昨年だけ標準で導入されました(したがって' std :: shared_ptr'となりました)。 – Gorpik