首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

当一个函数有返回值时,一定要用变量接受这个函数值吗?该如何解决

2012-03-09 
当一个函数有返回值时,一定要用变量接受这个函数值吗?当一个函数有返回值时,一定要用变量接受这个函数值吗

当一个函数有返回值时,一定要用变量接受这个函数值吗?
当一个函数有返回值时,一定要用变量接受这个函数值吗?
就像这个!
  for(list<int>::iterator lit=ilist.begin();lit!=ilist.end();++lit)
if(*lit%2)
{
lit=ilist.erase(lit);
lit--;
}
这样是对的!
for(list<int>::iterator lit=ilist.begin();lit!=ilist.end();++lit)
if(*lit%2)
{
ilist.erase(lit);
}
这样就是错的!
高手们,能说下这是为什么吗?
谢谢!

[解决办法]
你第二个错的原因是erase之后,list发生了变化,也就是lit没意义了
[解决办法]
if(*lit%2)
{
ilist.erase(lit);
}

你删除lit的时候这个迭代器失效了,但是你后面又继续使用~

热点排行