vector 的 reserve 和 resize 是C++ 中用于管理 vector 容器内存空间和大小的两个成员函数,它们的区别如下:
功能不同
- reserve :主要用于预先分配一定大小的内存空间,以避免在元素插入过程中频繁地重新分配内存,提高程序性能。它只影响 vector 的容量,不改变其实际元素个数。
- resize :用于改变 vector 中元素的数量。如果新的大小大于原来的大小,会在 vector 末尾添加默认构造的元素;如果新的大小小于原来的大小,会删除超出部分的元素。同时, resize 也可能会引起内存的重新分配,以适应新的元素数量。
参数含义不同
- reserve :接受一个参数,即要预留的最小容量。
- resize :可以接受一个参数,表示新的元素个数;也可以接受两个参数,第一个参数是新的元素个数,第二个参数是用于初始化新添加元素的值。
代码示例
cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
// 使用reserve预留空间
v.reserve(10);
std::cout << "Size after reserve: " << v.size() << ", Capacity: " << v.capacity() << std::endl;
// 使用resize改变大小
v.resize(5);
std::cout << "Size after resize: " << v.size() << ", Capacity: " << v.capacity() << std::endl;
return 0;
}
在上述示例中, reserve 后 vector 的大小不变,容量变为10; resize 后大小变为5,容量可能不变(如果原来的容量大于等于5)。