news 2026/4/16 15:04:59

【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/4/16 12:02:18

从零到一:uni-app电商项目实战拆解指南

从零到一&#xff1a;uni-app电商项目实战拆解指南 【免费下载链接】uniapp-shop-vue3-ts uni-app 开发的微信小程序-小兔鲜儿电商项目 项目地址: https://gitcode.com/gh_mirrors/un/uniapp-shop-vue3-ts 想象一下&#xff0c;你刚接手一个电商项目&#xff0c;老板要求…

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

PDF-Extract-Kit部署案例:出版社数字化工作流

PDF-Extract-Kit部署案例&#xff1a;出版社数字化工作流 1. 引言&#xff1a;出版社的数字化转型挑战 在传统出版行业中&#xff0c;大量纸质书籍、学术论文和教材需要转化为可编辑的数字内容。这一过程涉及文字识别、公式提取、表格还原、版面分析等多个复杂环节。传统的OC…

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

UnityExplorer完整使用教程:掌握Unity游戏调试与探索的必备工具

UnityExplorer完整使用教程&#xff1a;掌握Unity游戏调试与探索的必备工具 【免费下载链接】UnityExplorer An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games. 项目地址: https://gitcode.com/gh_mirrors/un/UnityExplorer 你是否在…

作者头像 李华
网站建设 2026/4/16 14:32:29

PDF-Extract-Kit部署指南:高可用PDF处理服务搭建

PDF-Extract-Kit部署指南&#xff1a;高可用PDF处理服务搭建 1. 引言 1.1 技术背景与业务需求 在当前数字化转型加速的背景下&#xff0c;PDF文档作为学术论文、技术报告、合同文件等信息的主要载体&#xff0c;其结构化提取需求日益增长。传统OCR工具虽能实现基础文字识别&…

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

PDF-Extract-Kit批量处理教程:高效处理大量PDF文档

PDF-Extract-Kit批量处理教程&#xff1a;高效处理大量PDF文档 1. 引言 在科研、工程和日常办公中&#xff0c;PDF文档的智能信息提取已成为一项高频需求。无论是学术论文中的公式与表格&#xff0c;还是扫描件中的文字内容&#xff0c;传统手动复制方式效率低下且容易出错。…

作者头像 李华