在 C++ 中,`std::vector` 的 `resize` 方法用于更改向量的大小。根据传入的参数,`resize` 可以增加或减少向量中的元素数量。如果增加元素,新的元素将被默认初始化;如果减少元素,超出新大小的元素将被删除。
`resize` 方法的基本语法
```cpp
void resize(size_type count);
void resize(size_type count, const value_type& value);
```
-
**count**: 新的大小。
-
**value**: (可选)如果新大小大于当前大小,则用此值初始化新增的元素。
示例代码
以下是使用 `resize` 方法的几个示例:
```cpp
#include <iostream>
#include <vector>
int main() {
// 创建一个整数向量并初始化为3个元素
std::vector<int> myVector = {1, 2, 3};
// 打印当前向量的内容
std::cout << "初始向量: ";
for (const auto& num : myVector) {
std::cout << num << " ";
}
std::cout << std::endl;
// 使用 resize 增加大小
myVector.resize(5); // 现在有5个元素,新增的元素将被默认初始化为0
std::cout << "增加大小后的向量: ";
for (const auto& num : myVector) {
std::cout << num << " ";
}
std::cout << std::endl;
// 使用 resize 增加大小并指定新元素的初始值
myVector.resize(7, 10); // 现在有7个元素,新增的元素初始化为10
std::cout << "指定初始值后的向量: ";
for (const auto& num : myVector) {
std::cout << num << " ";
}
std::cout << std::endl;
// 使用 resize 减少大小
myVector.resize(3); // 现在只有前3个元素
std::cout << "减少大小后的向量: ";
for (const auto& num : myVector) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果
```
初始向量: 1 2 3
增加大小后的向量: 1 2 3 0 0
指定初始值后的向量: 1 2 3 0 0 10 10
减少大小后的向量: 1 2 3
```
解释
-
**初始化向量**:我们先创建一个包含 3 个元素的向量。
-
**增加大小**:
-
第一次调用 `resize(5)` 将向量的大小增加到 5,新增的两个元素被默认初始化为 `0`。
-
第二次调用 `resize(7, 10)` 将大小增加到 7,新增的两个元素被初始化为 `10`。
- **减少大小**:调用 `resize(3)` 将向量的大小减少到 3,超出部分的元素被删除。
总结
`resize` 方法是 `std::vector` 的一个强大功能,允许开发者方便地调整向量的大小,并控制新增元素的初始化方式。这在动态修改数据集时非常有用。