對於像std::vector
或std::list
這樣的容器,聲明boost::shared_ptr
究竟有什麼意義?shared_ptr對容器有什麼意義?
這裏是一個利用BOOST_AUTO
的例子。
void someFunction()
{
...
BOOST_AUTO(sharedPtrToContainer, boost::make_shared<std::vector<T>>());
...
}
如果您只需要本地容器,是否有任何意義?有什麼好處?將一個shared_ptr
用於容器的用途是什麼?
這與將'shared_ptr'聲明爲其他任何內容相同:你這樣做是因爲你想要堆上的對象,但不想手動'刪除'它。我認爲你真正的問題是如果僅在函數內部使用本地容器,那麼在堆上分配容器的意義何在。您確定該函數不會將指針存儲在某處以備後用嗎? – Wyzard
矢量/列表是否共享所有權?如果是這樣,共享指針可能有意義。如果不是,共享指針沒有意義。 – robert
@Wyzard:謝謝你展現這個! – alexfr