千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何使用vector删除某个元素?

如何使用vector删除某个元素?

来源:千锋教育
发布人:xqq
时间: 2023-11-25 05:16:35 1700860595

vector是C++ STL中常用的容器之一,它提供了多种操作来方便地对元素进行增加、删除、查找等操作。本文将针对vector删除某个元素进行详细的阐述。

一、使用erase()方法删除元素

vector提供了erase()方法来删除指定位置的元素,可以通过迭代器或者下标的方式来指定要删除的元素。代码示例如下:


vector v{1, 2, 3, 4, 5};
v.erase(v.begin() + 2); // 删除第3个元素,即3

上述代码中,使用v.begin() + 2来获得第3个元素的迭代器,然后将其传递给erase()方法即可删除该元素。需要注意的是,erase()方法会将被删除元素后面的元素依次向前移动一个位置,因此删除元素的时间复杂度为O(n)。

二、使用remove()方法删除元素

除了使用erase()方法,还可以使用remove()方法来删除vector中的元素。remove()方法并不是真正意义上的删除元素,而是将vector中特定值的元素移动到vector末尾,并返回指向新末尾的迭代器。此时,我们再使用erase()方法,就可以删除移动到末尾的元素。

代码示例如下:


vector v{1, 2, 3, 4, 5};
v.erase(remove(v.begin(), v.end(), 3), v.end()); // 删除3

上述代码中,remove()方法使用起来比较奇特,它接受3个参数,第一个参数是vector的起始迭代器,第二个参数是vector的结束迭代器,第三个参数是要移除的元素的值。remove()方法会找到vector中所有等于第三个参数的元素,并将它们移动到vector末尾,最后返回新的末尾迭代器。我们再使用erase()方法来删除这些移动到末尾的元素,即可完成删除操作。

三、注意事项

在使用erase()方法和remove()方法时,需要注意以下几点:

使用erase()方法删除元素时,需要保证迭代器指向的元素确实存在。 使用remove()方法删除元素时,需要保证vector中确实存在要删除的元素。 删除元素后,vector的size()和capacity()会发生变化。 删除元素操作后,被删除的元素的内存并没有被释放,可以使用shrink_to_fit()方法来缩小vector的容量。

四、总结

本文介绍了vector删除元素的两种常见方式,分别是使用erase()方法和remove()方法。需要注意的是,在使用这些方法时需要注意异常情况,以免产生不可预料的错误。同时,删除元素后,还需要注意vector的size()和capacity()的变化,以及释放被删除元素的内存空间。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT