【发布时间】:2017-10-01 08:01:36
【问题描述】:
我遇到了类似的东西:
using arr_t=std::array<std::array<std::array<int,1000>,1000>,1000>;
std::unique_ptr<arr_t> u_ptr;
显然,使用唯一指针是为了克服 stackoverflow 问题。是否有任何情况下使用以前的代码而不仅仅是使用 std::vector ? std::unique_ptr<std::array<T,N>> 有真正的用例吗?
【问题讨论】:
-
您可以确定
arr_t永远不会调整大小。优化可能会发现这很有用。 -
std::vector不能保证分配所需的确切空间量 - 它可能会分配更多空间。std::array具有固定大小。 -
arr_t将分配连续的内存块,std::vector<std::vectorstd::vector<>>>将在1000 * sizeof(int)每个块中分配内存。这可能很重要。
标签: c++ arrays c++11 smart-pointers