繁体   English   中英

为什么我可以创建 std::array 的向量?

[英]Why can I create a vector of std::array?

我认为您应该始终在编译时确定数组的大小。 我认为是这种情况,因为将为该数组分配特定数量的 memory。

那么,为什么这不是问题:

std::vector<std::array<int,3>> something;
something.push_back(std::array<int,3> {1,2,3});

在这种情况下,您已经确定了数组的大小,但您不知道会是多少。 在运行时,您将创建未知数量的 arrays,那么为什么可以在事先不知道 memory 分配的情况下创建 arrays?

想想看,它不起作用,那么std::vector<int>出于同样的原因也不起作用。 您不需要事先知道std::vector中的元素数量,因为该向量动态管理存储元素所需的 memory。

std::array<int,3>的大小始终相同,这就是向量需要知道的为它们分配 memory 的内容。

此外, sizeof( std::vector<T> )是一个常数。 当你推送更多元素时它不会改变,就像 this 的sizeof

 struct foo {
     int * p;
 };

总是相同的,无论p指向一个包含1个元素还是42元素的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM