C++ 中std::vector<T>的几种清除方式

 更新时间:2025年04月07日 10:43:20   作者:点云SLAM  
std::vector<T> 可以通过多种方式清除(删除所有元素),本文主要介绍了C++ 中std::vector<T>的几种清除方式,具有一定的参考价值,感兴趣的可以了解一下

在 C++ 中,std::vector<T> 可以通过多种方式清除(删除所有元素)。以下是几种常见的方法(为int类型为例):

1. 使用 clear()

std::vector<int> vec = {1, 2, 3, 4, 5};
vec.clear();
  • 效果:删除所有元素,size() 变为 0,但 capacity() 不变,底层内存仍然保留。
  • 适用场景:当你需要清空 vector 但希望保留已分配的内存,以便后续使用时减少重新分配的开销。

2. 重新赋值空 vector

vec = std::vector<int>();
  • 效果:删除所有元素,并释放底层内存(capacity() 可能缩小)。
  • 适用场景:当你希望清除所有元素并释放多余内存。

3. 使用 swap() 交换一个空 vector

std::vector<int>().swap(vec);
  • 效果:vec 交换到一个新的空 vector,清空所有元素,并释放底层内存。
  • 适用场景:当你希望强制 vector 释放所有已分配的内存(通常 clear() 不会释放内存)。

4. 使用 erase() 移除所有元素

vec.erase(vec.begin(), vec.end());
  • 效果:删除所有元素,size() 变为 0,但 capacity() 可能不变。
  • 适用场景:一般不推荐,clear() 更简洁高效。

5. 使用 resize(0) 清空元素

vec.resize(0);
  • 效果:删除所有元素,size() 变为 0,但 capacity() 保持不变。
  • 适用场景:如果你需要保留已分配的容量,而不只是清空数据。

方法对比

方法是否清空 size()是否释放内存 (capacity())适用场景
clear()✅ 是❌ 否清除数据但保留内存
vec = std::vector<int>()✅ 是✅ 是清空并释放内存
swap(std::vector<int>())✅ 是✅ 是强制释放内存
erase(begin(), end())✅ 是❌ 否不推荐,clear() 更高效
resize(0)✅ 是❌ 否仅清空数据,保留内存

推荐

  • 如果只是想清空数据但保留内存,使用 clear()
  • 如果想清空数据并释放内存,使用 vec = std::vector<int>() 或 std::vector<int>().swap(vec)

这样可以根据具体需求选择最合适的方式。

到此这篇关于C++ 中std::vector<T>的几种清除方式的文章就介绍到这了,更多相关C++  std::vector<T>清除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中对于循环结构优化的一些入门级方法简介

    C语言中对于循环结构优化的一些入门级方法简介

    这篇文章主要介绍了C语言中对于循环结构优化的一些入门级方法,包括算法设计的改进来提高一些并行性等方法,要的朋友可以参考下
    2015-12-12
  • Qt设置窗体(QWidget)透明度的方法总结

    Qt设置窗体(QWidget)透明度的方法总结

    在Qt开发中,有的时候需要为窗体设置透明度。这篇文章主要为大家介绍几个Qt中窗体设置透明度的方法,文中的示例代码讲解详细,需要的可以参考一下
    2022-11-11
  • 深入理解c++模板中的class与typename

    深入理解c++模板中的class与typename

    在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?下面这篇文章主要给大家介绍了关于c++模板中class与typename的相关资料,需要的朋友可以参考下。
    2017-07-07
  • C++发送HTTP请求的实现代码

    C++发送HTTP请求的实现代码

    这篇文章主要介绍了C++发送HTTP请求的实现代码,需要的朋友可以参考下
    2014-06-06
  • 基于C语言sprintf函数的深入理解

    基于C语言sprintf函数的深入理解

    本篇文章是对C语言中的sprintf函数进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++之eigen安装与测试方式

    C++之eigen安装与测试方式

    这篇文章主要介绍了C++之eigen安装与测试方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 详解C++中函数模板的定义与使用

    详解C++中函数模板的定义与使用

    函数模板实质就是参数化数据类型,称这种编程模式为数据类型泛化编程。本文将通过示例来和大家一起了解下C++中函数模板的定义与使用,需要的可以参考一下
    2022-09-09
  • C语言指针基础详解

    C语言指针基础详解

    这篇文章主要介绍了C语言指针的基础,主要对C语言中指针的本质及常见用法做了较为通俗易懂的分析,是后续深入学习C语言的基础,需要的朋友可以参考下
    2021-10-10
  • C++ Qt开发之使用QProcess实现进程管理

    C++ Qt开发之使用QProcess实现进程管理

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,本文将重点介绍如何运用QProcess组件实现针对进程的控制管理等,感兴趣的可以了解下
    2024-03-03
  • C++静态成员函数不能调用非静态成员变量(详解)

    C++静态成员函数不能调用非静态成员变量(详解)

    下面小编就为大家带来一篇C++静态成员函数不能调用非静态成员变量(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12

最新评论