news 2026/4/18 7:53:28

【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/3/10 17:35:05

TouchGAL:如何为视觉小说爱好者打造纯净交流空间?

TouchGAL&#xff1a;如何为视觉小说爱好者打造纯净交流空间&#xff1f; 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找…

作者头像 李华
网站建设 2026/3/21 2:38:58

FontForge免费字体设计工具完整指南:从零开始打造专业字体

FontForge免费字体设计工具完整指南&#xff1a;从零开始打造专业字体 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 还在为找不到合适的字体而烦恼吗&#xff1f;想…

作者头像 李华
网站建设 2026/4/8 16:40:11

UnityExplorer深度解析:游戏调试与实时修改的终极利器

UnityExplorer深度解析&#xff1a;游戏调试与实时修改的终极利器 【免费下载链接】UnityExplorer An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games. 项目地址: https://gitcode.com/gh_mirrors/un/UnityExplorer 在Unity游戏开发与…

作者头像 李华
网站建设 2026/4/18 7:35:30

教育平台资源下载工具:轻松获取电子课本的完整指南

教育平台资源下载工具&#xff1a;轻松获取电子课本的完整指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为找不到合适的教学资源而烦恼吗&#xff1f;想…

作者头像 李华
网站建设 2026/4/17 20:05:16

智能B站评论采集器:3步获取深度用户洞察

智能B站评论采集器&#xff1a;3步获取深度用户洞察 【免费下载链接】BilibiliCommentScraper 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper 在当今数据驱动的时代&#xff0c;B站评论数据采集已成为市场研究、内容分析和用户洞察的重要环节。…

作者头像 李华