发布网友 发布时间:2022-04-21 00:08
共2个回答
热心网友 时间:2023-07-25 01:10
list的删除,要么是remove(按照某个值)删除;要么是erase,但要通过iterator(迭代器);不需要手动修改前后两个位置的连接(list本身的实现就是一种双向链表,STL已作了操作的考量)
下面是一个完整的例子:
#include <iostream>结果:
delete the 5th element需要注意的是在for循环中的删除: 应该有下面的类似代码:
...热心网友 时间:2023-07-25 01:10
因为List是有顺序的,所以本身没办法随机删除,所有可以先生成一个随机数,之后删除固定位置的值,以下是删除位置“i”处的代码举例:
list<int> nlist(30);
list<int>::iterator pnlist = nlist.begin();
advance(pnlisr,i);//迭代器前进i个元素,注意i是从0开始
if(pnlisr!=nlist.end())//最后一个不能删除
nlist.erase(pnlisr);//删除第i个元素
其实advance这个辅助函数,对你的迭代器的复杂度是O(N),和使用++操作符步进i次在效率上没有什么区别,只是代码上方便一些。