vector中resize()和reserve()区别
时间: 2025-02-05 16:10:19 浏览: 92
在C++中,`vector` 是一个动态数组容器,`resize()` 和 `reserve()` 是两个常用的成员函数,它们的作用和使用场景有所不同。
1. **`resize()`**:
- 作用:改变 `vector` 的大小。如果新的大小大于当前大小,则会添加新元素;如果新的大小小于当前大小,则会删除多余的元素。
- 参数:可以接受一个参数(新的大小),也可以接受两个参数(新的大小和初始值)。
- 影响:会改变 `vector` 的大小和容量(capacity),并可能改变其内容。
```cpp
std::vector<int> vec = {1, 2, 3};
vec.resize(5, 0); // vec 变为 {1, 2, 3, 0, 0}
```
2. **`reserve()`**:
- 作用:增加 `vector` 的容量,但不影响其大小。如果新的容量大于当前容量,则会分配更多的内存;如果新的容量小于或等于当前容量,则不会做任何事情。
- 参数:只接受一个参数(新的容量)。
- 影响:只改变 `vector` 的容量,不改变其大小或内容。
```cpp
std::vector<int> vec = {1, 2, 3};
vec.reserve(5); // vec 的容量变为至少 5,但大小仍然是 3
```
总结:
- `resize()` 改变 `vector` 的大小和容量,并可能改变其内容。
- `reserve()` 只改变 `vector` 的容量,不改变其大小或内容。
阅读全文
相关推荐


















