【发布时间】:2014-03-21 02:39:56
【问题描述】:
从 Boost 版本 1.53 开始,shared_ptr 可用于保存 指向动态分配数组的指针。 (http://www.boost.org/doc/libs/1_55_0/libs/smart_ptr/shared_ptr.htm)
此外,使用 shared_ptr 具有分配器功能的好处,例如 boost::make_shared(...);
我应该尽可能开始使用 boost::shared_ptr 而不是 boost::shared_array 吗?似乎 boost::shared_ptr 可以完成 boost::shared_array 所做的大部分工作。
【问题讨论】:
-
shared_array的一个优点是它覆盖了[]运算符。使用shared_ptr<T[]>您需要先取消引用指针:(*sharedPtr)[i]而不是sharedArray[i] -
std::vector通常是更好的选择。 -
@Nick:没必要,
shared_ptr支持数组类型的operator[],另一方面不支持operator->或operator*。见boost.org/doc/libs/1_55_0/boost/smart_ptr/shared_ptr.hpp -
自从我上次使用 Boost 以来,事情已经发生了变化!
-
@MaximYegorushkin:谢谢。也许 shared_ptr<:vector> 可以解决大部分问题。