news 2026/4/23 22:21:20

【std::vector】resize元素处理方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【std::vector】resize元素处理方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

      • 核心原理与代码验证
      • 分步解释关键问题
        • 1. `v.resize(5)` 对后5个元素的处理
        • 2. `v.resize(7)` 新增元素的值
      • 总结

你想弄清楚这段C++代码中,vector执行resize(5)后原10个元素里后5个的处理方式,以及resize(7)新增的两个元素的值,同时理解sizecapacity的变化,我会准确解答这些问题。

核心原理与代码验证

首先给出完整可运行的代码(补全头文件),并展示输出结果,再分步解释关键逻辑:

#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>v(10,5);// 初始化:10个元素,每个值为5cout<<v.size()<<" "<<v.capacity()<<endl;for(inti:v){cout<<i<<" ";}cout<<endl;v.resize(5);// 缩小size到5cout<<v.size()<<" "<<v.capacity()<<endl;for(inti:v){cout<<i<<" ";}cout<<endl;v.resize(7);// 扩大size到7cout<<v.size()<<" "<<v.capacity()<<endl;for(inti:v){cout<<i<<" ";}cout<<endl;return0;}

输出结果

10 10 5 5 5 5 5 5 5 5 5 5 5 10 5 5 5 5 5 7 10 5 5 5 5 5 0 0

分步解释关键问题

1.v.resize(5)对后5个元素的处理

resize(n)的核心作用是调整vector有效元素个数(size),而非释放内存(capacity):

  • n < 当前size时:vector销毁索引从nsize()-1的元素(这里是索引5~9的5个元素),这些元素不再属于vector的“有效元素范围”,访问它们属于未定义行为(不能假设它们保持5或被清零)。
  • capacity保持不变(仍为10):vector为了效率,不会主动释放已分配的内存(缩容需要手动触发,比如shrink_to_fit())。
  • 最终有效元素仅保留前5个,值仍为5。
2.v.resize(7)新增元素的值

n > 当前size时:vector会在末尾新增n - 当前size个元素(这里是2个):

  • resize未指定新元素的初始值,新增元素会用元素类型的默认值初始化
    • int类型的默认值是0,因此新增的2个元素(索引5、6)的值是0,而非原来的5(原后5个元素已被销毁,内存空间虽未释放,但已不属于有效元素)。
  • capacity仍为10:新增元素未超出已分配的内存范围,无需扩容。

总结

  1. resize(5):销毁后5个元素(索引5~9),size变为5,capacity仍为10,有效元素仅前5个5。
  2. resize(7):新增2个元素,用int默认值0初始化(非原5),size变为7,capacity仍为10。
  3. vectorcapacity仅在新增元素超出当前容量时扩容,resize不会主动缩容/扩容(仅调整有效元素数)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 13:58:17

【std::vector】size、capacity小结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、核心比喻&#xff08;快速理解&#xff09;二、正式定义与特点1. size&#xff08;大小&#xff09;2. capacity&#xff08;容量&#xff09;三、实例演示&…

作者头像 李华
网站建设 2026/4/22 8:01:46

Vue 3后台管理系统实战宝典:Element Plus Admin高效开发全攻略

Vue 3后台管理系统实战宝典&#xff1a;Element Plus Admin高效开发全攻略 【免费下载链接】element-plus-admin 基于vitetselementPlus 项目地址: https://gitcode.com/gh_mirrors/el/element-plus-admin 想要快速搭建一个专业的企业级后台管理系统吗&#xff1f;基于V…

作者头像 李华
网站建设 2026/4/19 5:41:14

NomNom:No Man‘s Sky存档编辑器的技术实现与应用指南

NomNom&#xff1a;No Mans Sky存档编辑器的技术实现与应用指南 【免费下载链接】NomNom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item indivi…

作者头像 李华
网站建设 2026/4/21 22:11:32

Harepacker复活版:MapleStory游戏资源的终极编辑神器

Harepacker复活版&#xff1a;MapleStory游戏资源的终极编辑神器 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected 在游戏开发与修改的世界里&…

作者头像 李华
网站建设 2026/4/19 1:54:22

TouchGal:Galgame爱好者的终极社区体验完整指南

TouchGal&#xff1a;Galgame爱好者的终极社区体验完整指南 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 在当前数字时代&#xff…

作者头像 李华
网站建设 2026/4/20 0:09:02

PDF-Extract-Kit技巧:提高表格结构识别准确率

PDF-Extract-Kit技巧&#xff1a;提高表格结构识别准确率 1. 背景与挑战&#xff1a;PDF表格提取的痛点 在科研、金融、法律等领域的文档处理中&#xff0c;PDF格式因其版式固定、跨平台兼容性强而被广泛使用。然而&#xff0c;当需要将PDF中的信息数字化时&#xff0c;尤其是…

作者头像 李华