c++list容器的插入和删除

函数原型:
push_back(elem);//在容器尾部加入一个元素
pop_back();//删除容器中最后一个元素
push_front(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除第一个元素
insert(pos,elem);//pos位置插
elem元素的拷贝,返回新数据的位置

insert(pos,n,elem);//pos位置插入nelem数据,无返回值。
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容器中的位置

  printlist(l1);
  list<int>::iterator L = l1.begin();
  cout << *L <<endl;
  l1.insert(++L,1000);
  printlist(l1);
  cout << *L <<endl;
  l1.insert(L,2000);
  printlist(l1);
  cout << *L <<endl;

300 200 100 10 20
300
300 1000 200 100 10 20
200
300 1000 2000 200 100 10 20
200

300 200 100 10 20
300
300 1000 200 100 10 20
200

原文链接: https://www.cnblogs.com/uestc-du/p/16258484.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++list容器的插入和删除

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/189090

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午2:37
下一篇 2023年2月12日 下午2:38

相关推荐