64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main()
{
int ia[]={0,1,1,2,3,5,8,13,21,55,89};
list<int> lis(ia,ia + 11);
list<int> newlist;
for(list<int>::iterator iter=lis.begin();iter!=lis.end();++iter)
{
if (*iter % 2 == 0)
{
newlist.push_back(*iter);
cout << *iter << " ";
}
}
// 到这里newlist就是你想要的结果
cout << endl;
system("pause");
return 0;
}
#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main()
{
int ia[]={0,1,1,2,3,5,8,13,21,55,89};
list<int> lis(ia, ia + sizeof(ia) / sizeof(int));
list<int>::iterator iter = lis.begin();
while (iter != lis.end())
{
if(*iter%2!=0)
lis.erase(iter++); //利用后++产生的副本
else
++iter;
}
//检查结果
for (iter = lis.begin(); iter != lis.end(); ++iter)
cout << *iter << " ";
cout<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main()
{
int ia[]={0,1,1,2,3,5,8,13,21,55,89};
list<int> lis(ia,ia+11);
for(list<int>::iterator iter=lis.begin();iter!=lis.end();++iter)
{
if(*iter%2!=0)
{
iter = lis.erase(iter);//改成这样。。否则迭代器失效。。
--iter;
}
else cout<<*iter<<" ";
}
cout<<endl;
system("pause");
return 0;
}