如题,编译可以通过,运行中报错。
通过单步可以找到报错的地方在一个普通的list遍历的循环里,用法肯定是没有问题,经过百度,发现原因如下:
我原本的做法是:
1,声明一个List以及他的iterator
std::list<MyType*> myList;
std::list<MyType*>::iterator myIt;
2,在代码中将新的list直接赋值给myList
void SetList(std::list<MyType*> newList)
{
myList = newList;
}
3,遍历myList
for(myIt=myList.begin;myIt!=myList.end;myIt++)
{
//to do...
}
注意,以上是错误的做法,原因是myIt是myList的迭代器,而myList被赋新值之后变成了别的list的副本,所以myIt和被赋值后的myList的迭代器自然也是incompatable(无法比较)的。