Ayu*_*ush 2 c++ stl vector dynamic-memory-allocation
假设我们知道我们将需要的向量的大小(比如“n”)。
使用是否vector<int> Array(n);比Array.push_back(element)一一使用有任何改进?
推荐哪个,为什么?
和
vector<int> Array(n);
Run Code Online (Sandbox Code Playgroud)
您创建一个包含n元素的向量,这些元素所需的所有内存都会立即分配。
当你使用例如
Array.push_back(value);
Run Code Online (Sandbox Code Playgroud)
然后需要调整向量的大小,这可能意味着必须重新分配内存,并且必须将所有内容复制到新内存中。
您可以预分配(或保留)内存,而不是创建具有设定大小的数组:
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
Run Code Online (Sandbox Code Playgroud)
当您有一个不能默认构造的对象向量时,这很有用。
要学习的重要概念:向量大小及其容量以及它们之间的区别是什么。
的容量是向量分配了存储器的元件的数量。
的大小是在该载体元件的当前数目。
容量与大小不同是很常见的。并且必须始终如此capacity >= size。