讲师中心 微信公众号
AI工具推荐 视频效率加速

C++ vector删除元素_C++ vector erase与remove用法

落婷君_5961

落婷君_5961

发布时间:2026-01-01 12:09:53

|

260人浏览过

|

来源于php中文网

原创

erase是vector成员函数,用于直接删除指定位置或范围的元素,并自动调整大小;2. remove来自,仅将不等于指定值的元素前移,返回新逻辑结尾迭代器,不改变容器大小;3. 单独使用remove不会真正删除元素,必须与erase结合才能释放空间;4. erase-remove惯用法是删除所有匹配元素的标准做法,如vec.erase(remove(vec.begin(), vec.end(), value), vec.end());5. 可配合remove_if删除满足条件的元素,高效适用于顺序容器;6. 其他方式包括pop_back()删尾元素、clear()清空容器,循环中使用erase需注意迭代器失效问题。关键区别:remove只重排,erase才真正删除。

c++ vector删除元素_c++ vector erase与remove用法

在C++中,vector 是最常用的动态数组容器之一。当我们需要删除其中的元素时,常用的方法有 erase 和 remove(通常与 erase 配合使用)。但它们的作用和用法不同,理解清楚才能正确高效地操作 vector。

erase 直接删除指定位置或范围的元素

erase 是 vector 容器成员函数,用于删除一个或多个元素,并自动调整容器大小。

基本语法:

  • iterator erase(iterator pos); —— 删除单个元素
  • iterator erase(iterator first, iterator last); —— 删除一个区间内的所有元素

示例:

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载

立即学习“C++免费学习笔记(深入)”;

vector vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin()); // 删除第一个元素 → {2, 3, 4, 5}
vec.erase(vec.begin() + 1, vec.begin() + 3); // 删除第2到第3个元素 → {2, 5}

注意:erase 删除后,被删位置之后的所有元素都会前移,迭代器失效问题需特别小心。

remove 移动待删除元素到末尾(不真正删除)

remove 来自 头文件,它并不是直接删除元素,而是将所有不等于指定值的元素移到前面,返回一个指向“新逻辑结尾”的迭代器。

它不会改变容器大小,只是重排元素。

示例:

立即学习“C++免费学习笔记(深入)”;

vector vec = {1, 2, 3, 2, 4};
auto new_end = remove(vec.begin(), vec.end(), 2); // 把所有非2的元素前移
// 此时 vec 可能为 {1, 3, 4, 2, 4},new_end 指向第4个元素
vec.erase(new_end, vec.end()); // 真正删除多余部分

单独使用 remove 不会减少 vector 的 size,必须配合 erase 才能真正释放空间。

erase 与 remove 结合:删除所有匹配元素

这种组合被称为 “erase-remove 惯用法”,是 C++ 中删除满足条件元素的标准做法。

适用于删除所有等于某个值的元素:

vec.erase(remove(vec.begin(), vec.end(), value), vec.end());

也可以使用 remove_if 删除满足特定条件的元素:

vec.erase(remove_if(vec.begin(), vec.end(), [](int n) {
return n % 2 == 0; // 删除所有偶数
}), vec.end());

这种方式效率高,且适用于大多数顺序容器。

其他删除方式简要说明

除了上述方法,还可以:

  • 用 pop_back() 删除最后一个元素
  • 用循环加 erase 删除多个特定位置元素(注意迭代器失效)
  • 清空整个容器:vec.clear()

注意:在循环中使用 erase 时,应接收其返回值作为下一个有效迭代器:

for (auto it = vec.begin(); it != vec.end(); ) {
if (*it == 2) it = vec.erase(it);
else ++it;
}

基本上就这些。掌握 erase 和 remove 的区别与配合使用,能让你更安全高效地管理 vector 中的元素。关键是记住:remove 只移动,erase 才真正删除。两者结合才是完整解决方案。

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6779

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3265

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

4248

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2885

2025.08.29

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

20

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

120

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn