如何将std::shared_ptr用于double数组?此外,使用shared_ptr的优点/缺点是什么。

最佳答案

这取决于您的追求。如果您只需要一个可调整大小的 double 数组,请选择

std::vector<double>

例子:
std::vector<double> v;
v.push_back(23.0);
std::cout << v[0];

如果您对分享上述阵列的所有权很重要,请使用
std::shared_ptr<std::vector<double>>

例子:
std::shared_ptr<std::vector<double>> v1(new std::vector<double>);
v1->push_back(23.0);
std::shared_ptr<std::vector<double>> v2 = v1;
v2->push_back(9.0);
std::cout << (*v1)[1];

另外,Boost有
boost::shared_array

这具有类似的目的。看这里:

http://www.boost.org/libs/smart_ptr/shared_array.htm

至于shared_ptr的一些优点/缺点:

优点
  • 基于引用计数自动进行共享资源的重新分配-有助于避免内存泄漏和其他与应分配给
  • 的事物未得到释放相关的问题
  • 可以使编写异常安全代码
  • 更加容易

    缺点
  • 对于小对象而言,存储引用计数的内存开销很重要
  • 性能可能比原始指针差(但要对此进行衡量)
  • 关于c++ - std::shared_ptr的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9876279/

    10-10 19:29