注册 登录
编程论坛 C++教室

HELP!!!!

從霝開匙 发布于 2007-10-15 16:30, 612 次点击

#include<iostream>
#include<list>
using namespace std;
int main()
{
int ia[]={0,1,1,2,3,5,8,13,21,55,89};
list<int>ilist(ia,ia+11);
list<int>::iterator iter;
int k=0;

for(iter=ilist.begin();iter!=ilist.end()&&k<11;iter++,k++)
{
if(k%2!=0)
ilist.erase(iter);

}
cout<<"{";
for(iter=ilist.begin();iter!=ilist.end();iter++)
{
cout<<*iter;
cout<<",";
}
cout<<"}\n";
return 0;
}

删除ilist的奇数位置的元素,程序是我自己编的,可以通过编译怎么不能运行啊,好象书上讲LIST不可以用指针的++或+2的。list不是连续分配内存的,书上给的习题解答也是用的++啊,我看调试也是说++哪出了问题。那个大哥解释下啊

[此贴子已经被作者于2007-10-17 17:22:13编辑过]

8 回复
#2
從霝開匙2007-10-16 10:37
那个大哥回答下啊
#3
從霝開匙2007-10-16 14:43
怎么米人回答啊
删除ilist的奇数位置的元素

给定int ia[]={0,1,1,2,3,5,8,13,21,55,89};
list<int>ilist(ia,ia+11);
那个大哥帮忙编个学习下,谢谢
#4
從霝開匙2007-10-17 17:21

麻烦那个大哥帮帮忙,凄凉啊 晾在这几天了无人问津

#5
远去的列车2007-10-18 10:25

for(iter=ilist.begin();iter!=ilist.end()&&k<11;iter++,k++)
{
if(k%2!=0)
ilist.erase(iter); //删了自己啦
}

改成这样试试:

for(iter=ilist.begin();iter!=ilist.end();k++)
{
if(k%2!=0)
{
list<int>::iterator temp = iter;
iter++;
ilist.erase(temp);
}
else
iter++;
}

#6
從霝開匙2007-10-18 13:38
谢谢咯 1!好像真的是这个问题 1!THANKS
#7
從霝開匙2007-10-18 13:39

还有个问题来这书上说iterator的算数运算不能用于list,++和--不属于算数运算吗

[此贴子已经被作者于2007-10-18 13:45:09编辑过]

#8
远去的列车2007-10-18 14:06
iterator的算术运算像加法、减法操作不能用于list, 但++,--这些重载操作符,可用

[此贴子已经被作者于2007-10-18 14:10:12编辑过]


#9
從霝開匙2007-10-19 15:03
回复:(远去的列车)iterator的算术运算像加法、减法...
谢咯,还没看到重载,不知道那些属于重载运算符!!记下咯 !
1