C++ vector怎么用_C++标准库STL中vector容器的初始化与遍历方法


vector是C++ STL中常用动态数组,支持自动内存管理与随机访问。可采用默认、指定大小、初始值、数组、拷贝及列表初始化方式;遍历支持下标、迭代器、范围for及反向遍历;使用时需注意空状态检查、const引用防拷贝、size_t类型匹配及emplace_back高效插入。

在C++标准库STL中,vector 是最常用的动态数组容器之一。它能自动管理内存,支持随机访问,并且提供了丰富的操作方法。掌握 vector 的初始化和遍历方式,是使用 STL 的基础。

vector 的常见初始化方法

可以根据不同场景选择合适的初始化方式:

  • 默认初始化:创建一个空的 vector,后续可通过 push_back 添加元素。
    std::vector vec;
  • 指定大小初始化:创建指定数量的元素,每个元素用默认值填充。
    std::vector vec(5); // 包含5个0
  • 指定大小和初始值:所有元素都被设置为给定值。
    std::vector vec(5, 10); // 5个10
  • 用数组初始化:通过构造函数复制一段数组内容。
    int arr[] = {1, 2, 3};
    std::vector vec(arr, arr + 3);
  • 用另一个 vector 初始化:实现拷贝构造。
    std::vector vec1 = {1, 2, 3};
    std::vector vec2(vec1);
  • 列表初始化(C++11 起):直接使用花括号赋初值。
    std::vector vec = {1, 2, 3, 4, 5};

vector 的常用遍历方式

遍历 vector 有多种写法,灵活选择可提高代码可读性和效率。

  • 下标访问:适合需要索引的场景,类似数组用法。
    for (int i = 0; i   std::cout }
  • 迭代器遍历:STL 标准方式,兼容性好。
    for (auto it = vec.begin(); it != vec.end(); ++it) {
      std::cout }
  • 范围 for 循环(C++11 起):简洁直观,推荐日常使用。
    for (const auto& val : vec) {
      std::cout }
  • 反向遍历:使用 reverse_iterator 或 rbegin/rend。
    for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
      std::cout }

注意事项与建议

使用 vector 时注意以下几点可以避免常见问题:

立即学习“C++免费学习笔记(深入)”;

  • 访问元素前确保 vector 非空,否则可能引发越界错误。
  • 尽量使用 const 引用在范围 for 中接收元素,避免不必要的拷贝。
  • size() 返回的是无符号类型(size_t),与有符号数比较时注意类型匹配。
  • push_back 和 emplace_back 都可用于添加元素,后者更高效(原地构造)。

基本上就这些。vector 使用简单但功能强大,熟练掌握初始化和遍历方法,能让你写出更清晰高效的 C++ 代码。不复杂但容易忽略细节。


# c++  # 常见问题  # 代码可读性  # 标准库  # for  # 构造函数  # const  # auto  # int  # 循环  # 遍历  # 的是  # 迭代  # 能让  # 几点  # 可通过  # 可以根据  # 它能  # 创建一个  # 有多种 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: php怎么下载安装并配置环境变量_命令行调用PHP技巧【技巧】  c++中如何求一个数的平方根_c++ sqrt函数与牛顿迭代法  Win11开机自检怎么关闭_跳过Win11开机磁盘扫描修复方法【技巧】  Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】  如何在Golang中实现文件下载_Golang文件传输与内容类型处理方法  c++ std::future和std::promise c++线程间通信【教程】  Win11输入法选字框不见了怎么办_Win11输入法修复与重置【教程】  Python模块的__name__属性如何由导入方式决定?  如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法  VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】  Win11怎么恢复出厂设置_Win11重置此电脑保留文件方法【详解】  Win11怎么激活Windows10_Win11激活Win10系统方法【步骤】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Win11怎么更改默认打开方式_Win11关联文件格式教程【详解】  Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】  如何使用Golang实现云原生应用弹性伸缩_自动应对流量变化  Win11怎么开启远程桌面_Win11系统远程桌面启用开关  Win11文件夹预览图不显示怎么办_Win11缩略图缓存重建修复【教程】  如何在Golang中使用内置函数_Golanglen append make等使用技巧  跨文件调用类方法怎么用_php作用域操作符与自动加载配合【介绍】  Windows10怎么查看系统激活状态_Windows10激活状态查看方法【教程】  Go语言中正确反序列化多个同级XML元素为结构体切片的方法  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  PyTorch DDP 多进程训练在 Kaggle 笔记本中的正确启动方式  Python字符串处理进阶_切片方法解析【指导】  Win11怎么关闭开机声音_Win11系统启动提示音静音【教程】  Win11怎么关闭自动调节亮度_Windows11禁用内容自适应亮度  php错误怎么开启_display_errors与log_errors的设置【汇总】  Win11键盘快捷键大全_Windows 11常用高效快捷键汇总【技巧】  MySQL 中使用 IF 和 CASE 实现查询字段的条件转换  Go 中 defer 在 goroutine 内部不生效的原因与执行时机详解  Windows10蓝屏代码DPC_WATCHDOG_VIOLATION_Win10死机修复指南  Mac系统更新下载慢或失败怎么办_解决macOS升级问题【方法】  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】  Win11怎么更改系统语言_Win11中文语言包下载与安装【指南】  phpstudy本地环境mysql忘记密码_重置mysqlroot密码操作流程【解答】  Win10怎样卸载iTunes_Win10卸载iTunes步骤【步骤】  如何在JavaScript中动态拼接PHP的base_url与前端变量  php删除数据怎么软删除_添加is_del字段标记删除【技巧】  Win11任务栏怎么调到左边_Win11开始菜单居左设置教程【步骤】  C#如何使用Channel C#通道实现异步通信  Win11讲述人怎么关闭_Win11误触开启语音朗读关闭【快捷键】  Win11色盲模式怎么开_Win11屏幕颜色滤镜设置【关怀】  Mac的“预览”如何合并多个PDF_Mac文件处理技巧【效率】  Windows10如何更改鼠标灵敏度_Win10鼠标属性指针选项调节  c# 服务器GC和工作站GC的区别和设置  零基础学会Python自动化办公_高效处理Excel与PDF文档  Python与GPU加速技术_CUDA与Numba高性能计算实践  VSC怎样用终端运行PHP_命令行执行脚本的步骤【教程】 

 2026-01-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.