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

手机站
千锋教育

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

当前位置:首页  >  技术干货  > List Erase方法详解

List Erase方法详解

来源:千锋教育
发布人:xqq
时间: 2023-11-23 03:14:00 1700680440

一、基础概念

List是C++标准库中的一个容器,可以存储不同类型的元素,可以通过下标或迭代器进行访问。而erase()是List容器的一个方法,用于删除指定位置或指定范围内的元素。

erase()方法有几种重载形式,如:


iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);

第一种形式是删除指定位置的元素,第二种形式是删除指定范围内的元素。这两种形式都返回一个指向被删除元素之后位置的迭代器。

二、删除单个元素

使用erase()方法删除List中的单个元素,只需要指定要删除的元素的位置即可。例如:


std::list myList = { 1, 2, 3, 4, 5 };
auto it = myList.begin();
std::advance(it, 2);
myList.erase(it);

以上代码将删除List容器中第三个元素,即值为3的元素。注意,使用erase()方法之后,List容器的大小将减小1。

三、删除指定范围内的元素

erase()方法的第二种形式用于删除指定范围内的元素,例如:


std::list myList = { 1, 2, 3, 4, 5 };
auto first = myList.begin();
auto last = myList.end();
std::advance(first, 2);
std::advance(last, -2);
myList.erase(first, last);

以上代码将删除List容器中第3个元素至倒数第3个元素之间的所有元素。要注意的是,erase()方法删除范围时,包含第一个迭代器所指向的元素,但不包含最后一个迭代器所指向的元素。

四、删除所有匹配元素

如果要删除List容器中所有匹配的元素,可以使用STL算法remove()和erase()配合使用,例如:


std::list myList = { 1, 2, 3, 4, 5, 2 };
myList.erase(std::remove(myList.begin(), myList.end(), 2), myList.end());

以上代码将删除List容器中的所有值为2的元素。注意,remove()算法并不会真正地删除元素,而是将不需要删除的元素前移,然后返回最后一个不需要删除元素的指针。通过配合erase()方法,可以将不需要删除的元素保留,将需要删除的元素删除。

五、应用场景

erase()方法可以在很多实际的开发场景中使用,例如:

六、总结

List容器是C++标准库中的一个常用容器,提供了丰富的方法来操作容器内的元素。erase()方法是其中一个非常实用的方法,可以用来删除单个元素、删除指定范围内的元素或删除所有匹配元素。在实际的开发场景中,使用该方法可以提高程序的效率和可读性。

tags: listerase
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
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