如何解决为什么我可以创建 std::array 的向量?
我认为您应该始终在编译时确定数组的大小。我认为是这种情况,因为会为该数组分配特定数量的内存。
那么,为什么这不是问题:
std::vector<std::array<int,3>> something;
something.push_back(std::array<int,3> {1,2,3});
在这种情况下,您已经确定了数组的大小,但您不知道有多少。在运行时,您将创建未知数量的数组,那么为什么可以在事先不知道内存分配的情况下创建数组?
解决方法
想想看,那行不通,那么 std::vector<int>
也不会因为同样的原因而工作。您无需事先知道 std::vector
中的元素数量,因为向量会动态管理存储元素所需的内存。
std::array<int,3>
的大小始终相同,这就是向量为它们分配内存时需要知道的。
此外,sizeof( std::vector<T> )
是一个常数。当你推送更多元素时它不会改变,就像 sizeof
this
struct foo {
int * p;
};
总是相同的,无论 p
指向包含 1
还是 42
元素的数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。