我想删除列表中的一些元素,在下面的实现中,我想删除7,14,26,77。最后打印17,89,45,50。但它似乎有些不对(这个程序运行成功,但什么都不打印),有人可以帮助我吗?
// remove from list
#include <iostream>
#include <list>
using namespace std;
int main ()
{
int myints[]= {17,89,7,14,26,77,45,50};
std::list<int> mylist (myints,myints+8);
std::list<int>::iterator p = mylist.begin();
std::list<int>::iterator q = mylist.begin();
advance(p, 2);
advance(q, 5);
for(p; p!=q; p++){
mylist.remove(*p);
}
std::cout << "mylist contains:";
for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
答案 0 :(得分:1)
std::list::remove
从列表中删除具有指定值的所有元素。
std::list::erase
从列表中删除具有指定位置的元素。
您尝试使用的是擦除范围超载:erase (iterator first,
iterator last)
mylist.erase(p, q);
会做你期望的事情