当前位置: 首页> 教育> 锐评 > c++ vector的resize方法

c++ vector的resize方法

时间:2025/7/11 20:17:46来源:https://blog.csdn.net/HJQD777/article/details/141832380 浏览次数:0次

在 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 
```

### 解释

1. **初始化向量**:我们先创建一个包含 3 个元素的向量。
2. **增加大小**:
   - 第一次调用 `resize(5)` 将向量的大小增加到 5,新增的两个元素被默认初始化为 `0`。
   - 第二次调用 `resize(7, 10)` 将大小增加到 7,新增的两个元素被初始化为 `10`。
3. **减少大小**:调用 `resize(3)` 将向量的大小减少到 3,超出部分的元素被删除。

### 总结

`resize` 方法是 `std::vector` 的一个强大功能,允许开发者方便地调整向量的大小,并控制新增元素的初始化方式。这在动态修改数据集时非常有用。

关键字:c++ vector的resize方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: