面试题答案
一键面试capacity()
和size()
的区别:size()
:返回vector
中当前存储的元素个数。它表示实际存储在vector
中的对象数量。例如,如果vector<int> v = {1, 2, 3}
,那么v.size()
将返回3。capacity()
:返回vector
在重新分配内存之前可以容纳的元素个数。vector
的容量是指在不重新分配内存的情况下它能够容纳的最大元素数量。初始时,capacity()
可能大于size()
,当size()
增长到等于capacity()
时,再添加新元素,vector
会重新分配内存,通常会将容量翻倍(具体实现可能因编译器而异)。
- 确保
vector
至少有足够容纳100个新元素的空间而不重新分配内存: 可以使用reserve
函数,代码如下:
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
// 假设v当前已有一些元素
v.reserve(v.size() + 100);
return 0;
}
在上述代码中,reserve
函数确保vector
的容量至少为v.size() + 100
,这样在添加100个新元素时,如果当前容量不足,会重新分配足够的内存,保证后续添加100个元素不会再次重新分配内存(前提是添加元素的数量不超过v.size() + 100
)。