c++list容器的插入和删除
函数原型:
push_back(elem);//在容器尾部加入一个元素
pop_back();//删除容器中最后一个元素
push_front(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除第一个元素
insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置
insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。
insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。
clear();//移除容器的所有数据
erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos);//删除pos位置的数据,返回下一个数据的位置。
remove(elem);//删除容器中所有与elem值匹配的元素
和之前比,基本的种类是一致的,但是在每一种类中的细节处有区别,主要的区别在于list是链表的形式,所以可以进行前后的插入删除操作
同时注意返回值的问题,有的操作是能产生有效的返回值的,返回的是下一个数据的位置,也就是返回一个迭代器,同时注意中间插入和删除也是输入迭代器,而且因为list的迭代器是只能一个一个向前,所以list查询中间位置的迭代器时间较慢,遍历的耗时较多,但是插入删除的时候因为移动数据较少,所以插入删除的操作反倒是会变快
同时注意多了一个特别的种类,remove,会批量删除全部匹配数据。
同时,要注意,删除和添加数据不会使得list的迭代器发生改变,这个地方要特别注意,比如本来L是第二个数据的迭代器,然后这个时候在第二个位置这插入了一个新的数据,那么这个时候,原本的迭代器就变成了指向第三个数据,但是指向那个数据本身这件事,是没有变的,变的是数据在list容器中的位置
300 200 100 10 20
300
300 1000 200 100 10 20
200
300 1000 2000 200 100 10 20
200
300
300 1000 200 100 10 20
200
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)