C++20前,使用成员函数erase删除元素,与vector的方法一致:
iterator erase( iterator pos );
iterator erase( iterator first, iterator last );
1.通过迭代器删除指定位置元素
需要说明的是,删除元素后,迭代器会失效,可以通过erase返回下一个有效的迭代器
#include <list>
#include <iostream>
#include <algorithm>
using namespace std;void pData(auto& data)
{for(auto& i : data){cout<<i<<" ";}cout<<endl;cout<<"size:"<<data.size()<<endl;
}int main()
{list<int> data{ 1, 2, 3, 4, 5, 6, 7, 8};pData(data);for(auto it=data.begin(); it!=data.end();){if(*it % 2 == 0){it = data.erase(it);}else{it++;}}pData(data);return 0;
}
运行程序输出ÿ