c++ - shared_ptr 到数组

标签 c++ c++11

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

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

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

最佳答案

你应该像那样创建那个shared_ptr

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

你必须给其他删除器shared_ptr

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

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

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;

关于c++ - shared_ptr 到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950439/

相关文章:

c++ - CRTP 在父的析构函数中调用子函数

c++ - uniform_real_distribution 给我超出范围的值

c++ - 控制 Linux 守护进程的 API

c++ - 以给定的概率得到真或假

c++ - 比较两个具有相同顶点的提升图

c++ - 管理琐碎类型

c++ - 为什么在使用堆叠 std::array 声明多维数组时需要 "double braces"?

c++ - 如何交换值(value)?

c++ - 使用 lambda 函数在 std::unordered_map 中查找最小值

c++ - 当在 Objective-C++ 中应用于 __weak 指针时,通过 "auto"关键字推导类型的规则是什么?