【发布时间】:2017-07-28 18:50:31
【问题描述】:
我假设下面的代码是数组的 unique_ptr(也不是我想要的)
std::unique_ptr<int[]> arr;
arr = std::make_unique<int[]> (5);
arr[0] = *new int(1);
delete &arr[0]; // malloc error, want to avoid "delete"
但是,我想要一个像这样保存 unique_ptrs 的数组...
std::unique_ptr<int> arr2 []; //Error, requires explicit size
arr2 = std::make_unique<int> [5]; //Desirable, does not compile
arr2[0] = std::make_unique<int>(1); //Desirable, does not compile
如何制作一个 unique_ptrs 数组?如果这不可能,那么我该如何处理 malloc 错误?
【问题讨论】:
-
2 个简单的选项:
std::array<std::unique_ptr<int>, 5>、std::vector<std::unique_ptr<int>> -
您到底想完成什么?你真的需要
unique_ptrs 的数组吗? -
@NathanOliver,据说是的。这有什么奇怪的?
-
@SergeyA 你会这么想,但正如你从 OP 的评论中看到的那样,这不是他们所需要的。他们只需要
std::unique_ptr<Type[]>或新的缓冲区和位置。构建向量不需要unique_ptr的数组。 -
@SergeyA 当然。不过,您必须平分奖金。
标签: c++ arrays c++14 unique-ptr