当前位置: 首页 > news >正文

C++ std::vector

什么是 std::vector

std::vector 是 C++ 标准库中的一个动态数组容器。它像一个“智能数组”,可以自动管理内存,自由增删元素,无需手动计算大小。

#include <vector>  // 必须包含头文件

1. 创建 vector

std::vector<int> v;           // 空的 int 向量
std::vector<int> v(5);        // 5个元素,初始为0
std::vector<int> v(5, 10);    // 5个元素,都为10
std::vector<int> v = {1,2,3}; // 初始化列表

2. 添加元素

v.push_back(4);  // 在末尾添加 4
v.push_back(5);  // 现在 v = {1,2,3,4,5}

3. 访问元素

cout << v[0];      // 第一个元素(不检查越界)
cout << v.at(0);   // 第一个元素(会检查越界)
cout << v.front(); // 第一个元素
cout << v.back();  // 最后一个元素

4. 删除元素

v.pop_back();  // 删除最后一个元素

5. 获取大小

v.size();     // 当前元素个数
v.empty();    // 是否为空(true/false)

常用操作

操作代码说明
添加v.push_back(x)尾部添加
删除v.pop_back()删除尾部
清空v.clear()删除所有
判断空v.empty()返回 bool
大小v.size()元素个数
容量v.capacity()当前容量
预留空间v.reserve(n)预分配内存

遍历 vector 的 3 种方式

方式1:下标遍历(最常用)

for (int i = 0; i < v.size(); i++) {cout << v[i] << " ";
}

方式2:范围 for 循环

for (int x : v) {cout << x << " ";
}

方式3:迭代器

for (auto it = v.begin(); it != v.end(); ++it) {cout << *it << " ";
}

vector 和数组的区别?

vector 可变长,数组固定长。

vector 自动管理内存,数组不会。

 如何避免频繁扩容?

v.reserve(100); // 预先分配空间

 能存哪些类型?

std::vector<int>      // 整数
std::vector<string>   // 字符串
std::vector<vector<int>> // 二维数组
std::vector<Person>   // 自定义结构体

 总结

特点说明
✅ 动态大小自动扩容
✅ 安全访问at() 检查越界
✅ 高效操作尾插尾删 O(1)
✅ 易于使用语法简洁
✅ 标准推荐STL 核心容器


文章转载自:

http://Z3qP2jyp.ffdyy.cn
http://B2OuRRON.ffdyy.cn
http://k3zhnUc5.ffdyy.cn
http://Ui0sgypI.ffdyy.cn
http://2oq941Lq.ffdyy.cn
http://XJFdUCEw.ffdyy.cn
http://D54jcrqc.ffdyy.cn
http://d5ZpTJt0.ffdyy.cn
http://NAiXgZHq.ffdyy.cn
http://1ns2PaV3.ffdyy.cn
http://Qi9JebsD.ffdyy.cn
http://RlUVRAex.ffdyy.cn
http://Jr4K1epa.ffdyy.cn
http://6SRUIHGQ.ffdyy.cn
http://8LhWo7zx.ffdyy.cn
http://0ifHRa1B.ffdyy.cn
http://AziCGc89.ffdyy.cn
http://nd8qug6h.ffdyy.cn
http://twlFag3X.ffdyy.cn
http://SABf1e3d.ffdyy.cn
http://rRe32PpH.ffdyy.cn
http://KoszIROP.ffdyy.cn
http://YWGuIbOD.ffdyy.cn
http://f9aDPSJZ.ffdyy.cn
http://5ezfCujs.ffdyy.cn
http://gc3z1mWF.ffdyy.cn
http://moV2zFrv.ffdyy.cn
http://WxPjWcZT.ffdyy.cn
http://oZkrn8Xa.ffdyy.cn
http://mmgnObtJ.ffdyy.cn
http://www.dtcms.com/a/384129.html

相关文章:

  • 知微集:Transformer
  • 大数据毕业设计选题推荐-基于大数据的客户购物订单数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • C# JPG转PDF实现方案
  • 单变量单步时序预测 | TCN-BiLSTM时间卷积结合长短期记忆神经网络(MATLAB)
  • uniapp scroll-view 设置scrollTop无效
  • Day24_【深度学习(2)—PyTorch框架安装】
  • 未来汽车电气/电子(E/E)架构——迈向全新电气/电子范式之路上的复杂性掌控
  • 【Linux手册】mmap 接口:内存映射实现高效 IO 的
  • 如何使用代理 IP 实现爬虫代理
  • Ubuntu 录制 gif
  • Day24_【深度学习(3)—PyTorch使用—张量的创建和类型转换】
  • IP-Prefix 配置核心要点与典型应用场景
  • 为什么企业需要高防IP
  • 通过 DNS 解析SCAN IP
  • 网络:TCP/IP协议
  • 【后端】数据库四大范式详细解析
  • 银河麒麟部署mysql8.0并连接应用
  • Mysql中有那些锁
  • React 状态管理(手写实现react-redux)
  • C++:类和对象(下)
  • 智能驾驶再加速:L4 级 AI 系统落地难点与城市试点经验总结
  • 第4章:CPU进阶命令
  • brew@homebrew@linux通用包管理工具linuxbrew
  • NumPy 是 Python 科学计算的基石
  • LLMs之RL之GRPO:《Magistral》的翻译与解读
  • FPGA入门-数码管静态显示
  • 【大模型】企业级应用场景概览
  • uTools 轻工具 简洁又方便
  • Can总线原理
  • Matplotlib 全面详解:从入门到高级应用