这个问题已经折腾了本人两天了,起初本人还以为只是本人这个代码模块实现有槽点,代码修了又改改了又修,至今本人已经两眼发青意识浑浊……
最初本人想实现的逻辑大致是这样的:
bool CCAllDate::ChangeTheList(CString str)
{
vector<GOODSDATE>::iterator iter = MyGoodsList.begin();
while (iter != MyGoodsList.end())
{
if (str == iter->szNumber)
{
iter = MyGoodsList.erase(iter); //最初想要实现的思路
return true;
}
else
++iter;
}
}
以上是本人以MFC某个按键事件中大致想实现的功能,就是删除程序中MyGoodsList的指定一条商品信息。
解决方案
80
建议题主多贴点代码。
这样erase应该是没问题的。
是不是别的地方导致的,例如调用了ChangeTheList这个函数的地方,在调用之前使用了迭代器,调用之后没有重新获取迭代器而是继续使用了。
建议题主单步一下,看看是这个函数导致的(是的话定位到具体的代码上,看看是哪行),还是别的地方导致的
这样erase应该是没问题的。
是不是别的地方导致的,例如调用了ChangeTheList这个函数的地方,在调用之前使用了迭代器,调用之后没有重新获取迭代器而是继续使用了。
建议题主单步一下,看看是这个函数导致的(是的话定位到具体的代码上,看看是哪行),还是别的地方导致的