如何动态分配 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/