让我们说我们知道我们将需要的 vector 的大小(例如“n”)。
与逐一使用ojit_code相比,使用vector<int> Array(n);
是否有任何改进?
推荐哪个,为什么?
最佳答案
用
vector<int> Array(n);
您创建一个包含
n
元素的 vector ,这些元素所需的所有内存将立即分配。当您使用例如
Array.push_back(value);
然后需要调整 vector 的大小,这可能意味着必须重新分配内存,并且所有内容都必须复制到新内存中。
除了创建一个具有固定大小的数组,您还可以预分配(或reserve)内存:
vector<int> Array; // An empty vector
Array.reserve(n); // Reserve memory, but keep the size as zero (it's still empty)
Array.push_back(value); // No reallocation needed, size is now one
当您具有无法默认构造的对象 vector 时,这很有用。
要学习的重要概念: vector 大小及其容量以及它们之间的区别是什么。
容量是 vector 已为其分配内存的元素数。
大小是 vector 中当前元素的数量。
容量与大小不同是很常见的。并且
capacity >= size
必须始终是真实的。
关于c++ - 与C++中使用push_back相比,声明具有大小的 vector 是否有任何改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62128083/