2019独角兽企业重金招聘Python工程师标准>>>

list中remove和erase都是删除一个元素,其中remove参数类型和数据类型一致,而erase参数类型是迭代器。
remove(aim)是删除链表中的aim元素,若有多个aim,都会删除,而
erase(it)是删除迭代器指定位置的元素,并且返回下一个位置的迭代器来看例子。

#include <iostream>
#include <list>
using namespace std;
void MyRemove(list<int>& MyList, int aim) {
    MyList.remove(aim);
}
void MyErase(list<int>& MyList, list<int>::iterator ptr) {
    if (ptr != MyList.end()) {
        auto it = MyList.erase(ptr);
        if (it != MyList.end()) {   //若此时ptr指向list最后一个元素,则it为最后一个元素之后的迭代器
            cout << "下一个元素的值为" << *it << endl;
        }
    }
}
int main() {
    list<int>MyList;
    MyList.push_back(1);//list支持双向插入哦 push_back 尾插 push_front 头插
    MyList.push_back(2);
    MyList.push_back(3);
    MyList.push_back(4);
    MyList.push_back(4);
    //MyRemove(MyList,4);
    MyErase(MyList,MyList.begin());
    auto it = MyList.begin();
    while (it != MyList.end()) {
        cout << *it << endl;
        it++;
    }
    getchar();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
执行MyRemove(MyList,4),可以看到list中所有的4都被删除了,系统源代码中的remove就是利用for循环来删除的。

执行MyErase(MyList,MyList.begin()) 是删除指定位置的元素,返回下一个元素的迭代器,若删除的是链表最后一个元素,则返回最后一个元素之后的迭代器,所以得要判断迭代器没有越界。

List常用操作函数:

Lst1.assign() 给list赋值
Lst1.back() 返回最后一个元素
Lst1.begin() 返回指向第一个元素的迭代器
Lst1.clear() 删除所有元素
Lst1.empty() 如果list是空的则返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 删除一个元素
Lst1.front() 返回第一个元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一个元素到list中
Lst1.max_size() 返回list能容纳的最大元素数量
Lst1.merge() 合并两个list
Lst1.pop_back() 删除最后一个元素
Lst1.pop_front() 删除第一个元素
Lst1.push_back() 在list的末尾添加一个元素
Lst1.push_front() 在list的头部添加一个元素
Lst1.rbegin() 返回指向第一个元素的逆向迭代器
Lst1.remove() 从list删除元素
Lst1.remove_if() 按指定条件删除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改变list的大小
Lst1.reverse() 把list的元素倒转
Lst1.size() 返回list中的元素个数
Lst1.sort() 给list排序
Lst1.splice() 合并两个list
Lst1.swap() 交换两个list
Lst1.unique() 删除list中重复的元素
--------------------- 
作者:~AC~ 
来源:CSDN 
原文:https://blog.csdn.net/qq_42673507/article/details/86678625 
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/u/4000302/blog/3041978

stl list中erase和remove区别相关推荐

  1. c语言remove命令和erase,详解C++ list中erase与remove函数的使用

    C语言中的erase与remove函数一直让小编很迷糊,因为他们的功能都是一样的,本文是详解C++ list中erase与remove函数的使用方法,接下来爱站技术频道小编带你一起来了解吧! eras ...

  2. vector删除元素erase与remove区别

    vector删除元素可用erase与remove,但是使用erase后vector本身size()随之变化,而使用remove后vector本身size()并没有变化,只有迭代器指向变了!!!所以使用 ...

  3. STL中list的remove和remove_if的用法

    stl list 删除元素 list.remove()和list.remove_if()函数 (list.remove() and list.remove_if() functions) remove ...

  4. queue方法中add,offer,remove,poll,element,peek的用法和区别

    queue方法中add,offer,remove,poll,element,peek的用法和区别 1.add()和offer()两者都是往队列尾部插入元素. 不同是,当超出队列界限(容量)的时候,ad ...

  5. STL vector的erase操作问题

    STL vector的erase操作问题 一老大说CSDN上有篇博文("关于STL vector的erase操作",地址是:http://blog.csdn.net/tingya/ ...

  6. std::vector中resize()和reserve()区别

    在STL容器中vector用的还是比较多的,但是在使用时,会对resize()和reserve()的使用产生迷惑,现在就对这一情况做个对比: resize():改变的是size()与capacity( ...

  7. python的os库的remove可以删除只带有只读属性的_扩展库os中的方法remove()可以删除带有只读属性的文件。(2.0分)_学小易找答案...

    [填空题]已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为__.(2.6分) [填空题]假设已从标准库functools导入reduce()函数,那么表达式 reduc ...

  8. erase和remove

    1.引言 以下代码有什么问题,如何修改? #include<iostream> #include<vector> using namespace std; void print ...

  9. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  10. 关于EF中ApplyCurrentValues和ApplyOriginalValues区别

    关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用. //         // 摘要:         //     将 System ...

最新文章

  1. SVG.js 文本绘制整理
  2. MaterialDesign动画
  3. 搭建 coreseek sphinx
  4. solr部署在tomcat下
  5. java项目 配置文件_细数Java项目中用过的配置文件(properties篇)
  6. 临界区、互斥量、信号量、事件的区别
  7. java 全局代码区_MyEclipse设置全局编码
  8. iOS上传图片和视频(base64和file)
  9. python list中分段_python将list中的元素拼接为一个str
  10. 八大排序算法原理及实现
  11. 为unigui程序搭建chrome手机浏览器(B4A)
  12. 免费的office软件哪个好用
  13. python 代码库之遍历ttf字库编码和字符(含demo)
  14. Leetcode 2233. Maximum Product After K Increments
  15. 恒生与中国信通院联合发布《证券行业分布式核心系统SRE运维白皮书》
  16. Linux系统之热插拨事件uevent
  17. 16光8电全千兆宽温工业交换机16千兆光8千兆网口机架式网管型工业级以太网交换机
  18. EMNLP-21-Learning from Noisy Labels for Entity-Centric Information Extraction-noise label
  19. 都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇
  20. sql server 中 create or replace 视图方法

热门文章

  1. 语义分割空间上下文关系_多尺度空间注意的语义分割
  2. numpy中的对应元素相乘,可以使用广播
  3. 云服务器机型系统选择,云服务器机型选择操作系统
  4. vscode web版搭建_VS Code 1.40 发布!可自行搭建 Web 版 VS Code!
  5. red hat linux yum,Red Hat Linux安装CentOS的yum源
  6. python输出欢迎某某某_Python基础中所出现的异常报错总结,python基础总结
  7. android listview固定内容,Android ListView 列表分隔,条目中添加分类信息(文字,图片等)...
  8. seq()函数--R语言
  9. java版chsi.com.cn模拟登陆
  10. iOS App之间的通信方式