List: 支持两种接口删除元素
API:
c.erase(pos) // 删除pos位置的元素
c.erase(beg,end) //删除e [beg,end)区间元素
c.remove(val) // 删除所有的元素
c.remove_if(op) // 根据op的内容删除元素
代码:
erase 删除第一个元素
list<int>li ={1,3,5,7,7};
li.erase(li.begin());
for(auto &i:li) {
cout<<i<<" ";
}
// 输出: 3 5 7 7
方法1 :erase 删除第2个元素
list<int>li ={1,3,5,7,7};
li.erase(++li.begin());
for(auto &i:li) {
cout<<i<<" ";
}
// 输出: 1 5 7 7
方法2:erase 删除第2个元素
list<int>li ={1,3,5,7,7};
list<int>::iterator itr = li.begin();
advance(itr,1); // 移动1 及 指向下标为1的元素,不能越界
li.erase(itr);
for(auto &i:li) {
cout<<i<<" ";
}
// 输出: 1 5 7 7
remove 删除7
list<int>li ={1,3,5,7,7};
li.remove(7);
for(auto &i:li) {
cout<<i<<" ";
}
// 输出:1 3 5
remove_if 删除>5的元素
list<int>li ={1,3,5,7,7};
li.remove_if([](int x){
if(x > 5)
return true;
else
return false;
});
for(auto &i:li) {
cout<<i<<" ";
}
//输出:1 3 5