c++ vector的resize方法

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

  1. **减少大小**:调用 `resize(3)` 将向量的大小减少到 3,超出部分的元素被删除。

总结

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

相关推荐
wenxin-1 分钟前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan
数据小爬虫@2 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片2 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python
王老师青少年编程3 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛
DogDaoDao3 小时前
leetcode 面试经典 150 题:有效的括号
c++·算法·leetcode·面试··stack·有效的括号
Coovally AI模型快速验证4 小时前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
一只小bit4 小时前
C++之初识模版
开发语言·c++
王磊鑫5 小时前
C语言小项目——通讯录
c语言·开发语言
钢铁男儿5 小时前
C# 委托和事件(事件)
开发语言·c#
可为测控5 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉