【发布时间】:2017-10-30 13:52:39
【问题描述】:
我想删除列表中的一些元素,在下面的实现中,我想删除 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;
}
【问题讨论】:
-
从
mylist中删除p后,您认为p++应该做什么? -
这个程序运行成功,但是没有打印出来
-
您最初向
mylist添加了多少元素? -
打字错误,应该是myints+8
-
std::list::remove似乎是一个奇怪的选择,你知道它的作用吗?