news 2026/8/10 2:06:24

【std::vector】clear介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【std::vector】clear介绍

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

文章目录

      • `std::vector::clear()` 详细说明
        • 1. 核心功能
        • 2. 对 size 和 capacity 的具体影响
        • 3. 代码示例
        • 4. 补充说明
      • 总结

你想了解C++标准库中std::vectorclear()成员函数的功能,并且重点关注这个函数是对size生效,还是对capacity生效。

std::vector::clear()详细说明

1. 核心功能

clear()的作用是销毁vector中所有的元素,并将vector元素数量(size)置为 0,但不会释放vector已经分配的内存空间(即不改变容量 capacity)。

2. 对 size 和 capacity 的具体影响
  • 对 size 的影响clear()会直接将vectorsize()返回值变为 0,因为容器内的所有元素都被销毁了,当前有效元素的数量为 0。
  • 对 capacity 的影响clear()完全不影响capacity()的返回值,容器之前分配的内存空间会被保留,不会被释放。
3. 代码示例

下面的代码可以直观展示clear()sizecapacity的影响:

#include<iostream>#include<vector>intmain(){// 创建一个vector并添加元素std::vector<int>vec={1,2,3,4,5};std::cout<<"调用clear()前:"<<std::endl;std::cout<<"size: "<<vec.size()<<std::endl;// 输出 5(当前元素数量)std::cout<<"capacity: "<<vec.capacity()<<std::endl;// 输出 5(分配的内存能容纳的元素数)// 调用clear()清空元素vec.clear();std::cout<<"\n调用clear()后:"<<std::endl;std::cout<<"size: "<<vec.size()<<std::endl;// 输出 0(元素已清空)std::cout<<"capacity: "<<vec.capacity()<<std::endl;// 输出 5(内存仍保留)// 补充:如果想同时清空元素并释放内存(改变capacity),可以用swap技巧std::vector<int>().swap(vec);// 用空vector交换,释放原有内存std::cout<<"\nswap后:"<<std::endl;std::cout<<"size: "<<vec.size()<<std::endl;// 输出 0std::cout<<"capacity: "<<vec.capacity()<<std::endl;// 输出 0(内存已释放)return0;}
4. 补充说明
  • clear()只是销毁元素,不会调用deallocate释放内存,这样做的目的是为了性能优化:如果后续需要向vector中添加新元素,不需要重新分配内存,直接复用原有空间即可。
  • 如果你既想清空元素,又想释放内存(让capacity也变为 0),可以使用示例中的swap技巧,或者在 C++11 及以上版本中使用shrink_to_fit()(注意:shrink_to_fit()是请求式的,编译器不一定会严格执行,但主流编译器都会支持)。

总结

  1. std::vector::clear()仅对size生效,会将size置为 0,销毁所有元素;
  2. clear()capacity无影响,不会释放已分配的内存空间;
  3. 若需清空元素并释放内存,可使用swapvectorshrink_to_fit()(C++11+)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 4:59:37

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/8/6 7:01:37

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/7/31 9:33:16

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

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

作者头像 李华
网站建设 2026/8/8 17:36:27

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

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

作者头像 李华
网站建设 2026/7/31 5:07:09

PDF-Extract-Kit设计理念:解决的核心问题

PDF-Extract-Kit设计理念&#xff1a;解决的核心问题 1. 背景与核心挑战 1.1 PDF文档处理的行业痛点 在科研、教育、出版和企业办公等领域&#xff0c;PDF作为最通用的文档格式之一&#xff0c;承载了大量结构化与非结构化的信息。然而&#xff0c;尽管PDF在跨平台展示上具有…

作者头像 李华
网站建设 2026/7/31 5:06:35

PDF-Extract-Kit架构图:系统组件与数据流

PDF-Extract-Kit架构图&#xff1a;系统组件与数据流 1. 系统概述与设计背景 1.1 技术背景与核心目标 在数字化文档处理日益普及的今天&#xff0c;PDF作为最广泛使用的文档格式之一&#xff0c;承载了大量结构化和非结构化的信息。然而&#xff0c;传统PDF解析工具往往难以…

作者头像 李华