vecotr 迭代器使用异常
将迭代器作为函数的引用参数,发现函数结束后,迭代器没有变化,而且还导致迭代器异常。下面是我调用整个过程:
std::vector<CRepeatRect>::iterator repeatIter;
GetShortestHeightRect(vecRepeatRect,repeatIter);
if(repeatIter==vecRepeatRect.end())//这里直接导致程序崩溃
{
return FALSE;
}
//这里只是简单的修改下迭代器的值
GetShortestHeightRect(std::vector<CRepeatRect> vecRepeatRect,std::vector<CRepeatRect>::iterator& indexIter)
{
indexIter=vecRepeatRect.end();
return indexIter;
}
上面的代码只是让函数简单的修改下迭代器的值,可是调试的结果发现,函数结束后,迭代器的值根本没有改变过,而且接下来的if判断语句还让程序崩溃了。
另外在调试过程中,GetShortestHeightRect函数使用修改indexIter的值的。
[解决办法]