shared_ptr 到一个数组

新手上路,请多包涵

如何动态分配 shared_ptr 将指向的“n 个元素”?

我能够创建一个共享指针将指向的静态数组,但我希望用户输入一个数字,然后分配 n 个元素。

 shared_ptr<int[10]> p = make_shared<int[10]>();

原文由 TheDoomDestroyer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 539
1 个回答

你应该像这样创建 shared_ptr

 std::shared_ptr<int> sp( new int[10], std::default_delete<int[]>() );

您必须将其他删除器提供给 shared_ptr

您不能使用 std::make_shared ,因为该函数仅提供 1 个参数,要在数组上创建指针,您也必须创建删除器。

或者你也可以使用(比如在注释中,带有数组或带有自己的删除器的向量)

 std::shared_ptr<std::array<int,6>> ptr(std::make_shared<std::array<int, 6>>(std::array<int, 6>()));

如何获得特定元素?像那样

std::shared_ptr<int> sp(new int[10], std::default_delete<int[]>());
sp.get()[0] = 5;
std::cout << sp.get()[0] << std::endl;

原文由 21koizyd 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题