C ++ Vector初始容量

时间:2014-05-01 18:43:55

标签: c++ vector

我有一些使用数千个向量的代码,每个向量只有4个条目,所以我想将每个向量的初始大小设置为4,这样我就可以通过不保留未使用的内存来优化内存使用。

我尝试了预约方法:

vector<Foo> bar;
bar.reserve(10);

但似乎它扩展并且不缩小,似乎也没有构造函数创建具有指定容量的向量。

还有2个红利问题:

默认初始容量是什么

我可以创建具有特定容量的向量吗?

2 个答案:

答案 0 :(得分:25)

构造函数无法控制向量的容量 - 没有适用的过载。

C ++标准不保证默认构造的向量vector<Foo> bar;的容量。但是,所有众所周知的实现都使用0作为默认容量。这是你可以依赖的东西,因为在那时分配内存是没有意义的。

所以我相信你的问题的答案是:只需使用

vector<Foo> bar;
bar.reserve(4);

答案 1 :(得分:8)

  

每个载体只有4个条目

然后,您可能会更好地使用std::array<Foo, 4>

如果您需要4个元素,因为您需要数学向量,我建议使用结构:

struct Vector
{
    Foo x, y, z, w;
};