C++项目催人老,尤其还是自己一个人要干一个组的活的时候...不过也确实通过这种方式磨练了自己,这不今个就遇到个奇葩问题。
迭代器报错:“vector iterators incompatible”。
这啥?我蜜汁自信,感觉并没有产生不搭的问题啊!完全摸不到头脑,遂谷之。
当时的代码片段如下:
auto prop_itr = RoleCardController::getInstance()->propVec.begin();
while (prop_itr != RoleCardController::getInstance()->propVec.end())
{
if ((*prop_itr)->state == PROPS_FREE)
{
(*prop_itr)->purge();
prop_itr = RoleCardController::getInstance()->propVec.erase(prop_itr);
continue;
//这个free掉,后面继续
}
.......
最后查到解决办法:
在erase操作后,没有将循环变量i指向修改后的向量迭代器,就继续循环,再与end()比较时断言出现。