C++ vector 初始容量

标签 c++ vector

我有一些代码使用了数千个 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/

相关文章:

c++ - 解析字符串并将标记作为参数传递

c++ - 使用 C++ boost 库的按位运算

c++ - 关于如何使用循环数组实现 std::vector 的建议?

c++ - 在C++容器中作为模板参数提供的分配器与作为构造函数参数提供的分配器之间的区别?

r - 使用非序列向量作为循环的输入

c - 在 AVX vector 中加载 64 位整数

c++ - struct 中的 std::vector 定义

c++ - 根据空间接近度将具有 xyz 坐标的 3D 点划分为 10 个域

c++ - 如何使 cin >> 不将 float 转换为整数?

c++ - wxComboBox 返回十六进制