我有一个 std::vector,我知道它永远不必增长——它总是有 n
元素(不幸的是,n
在编译时是未知的时间所以我不能使用 std::array)。我能做到:
std::vector<blah> v(n);
正确地将其容量设置为 n
。但是当我继续用 push_back
填充 v
时,它会自动调整大小为 2n
。
我意识到这是过早的优化,但它困扰着我。有没有办法设置最大大小之类的?
最佳答案
该构造函数没有将 vector 的容量设置为 n
,而是创建一个包含 n
的 vector 用 blah
构造的对象的默认构造函数。这可能会让具有 Java 或 .NET 背景的人感到困惑,其中 ArrayList
和 List<T>
两者都有一个设置初始容量的构造函数。
解决方案是分两步进行:
std::vector<blah> v; // create an empty vector
v.reserve(n); // increase capacity
关于c++ - 防止 std::vector 在 push_back 上调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918684/