我有一些代码使用了数千个 vector ,每个 vector 只有 4 个条目,所以我想将每个 vector 的初始大小设置为 4,这样我就可以通过不保留未使用的内存来优化内存使用。
我试过保留方法:
vector<Foo> bar;
bar.reserve(10);
但它似乎扩展而不收缩,似乎也没有构造函数可以创建具有指定容量的 vector 。
还有 2 个额外问题:
默认初始容量是多少
我可以创建一个具有特定容量的 vector 吗?
最佳答案
构造函数无法控制 vector 的容量 - 没有适用的重载。
C++ 标准不保证默认构造 vector 的容量 vector<Foo> bar;
.然而,所有众所周知的实现都使用 0 作为默认容量。这是您可以依赖的东西,因为此时分配内存是没有意义的。
所以我相信你的问题的答案是:只需使用
vector<Foo> bar;
bar.reserve(4);
关于C++ vector 初始容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23414302/