c++中的list之erase操作
正确的代码:
void listRelease(aList_t *naList)
{
aList_t ::iterator iter;
for (iter = naList->begin(); iter != naList->end(); )
{
LOGD_INFO << "release ";
reportList->erase(iter++);
}
}
如果下面这样写for,就错啦:
for (iter = naList->begin(); iter != naList->end(); iter++)
原因是erase会把迭代器iter给破坏掉。
参考上篇博文:
c语言函数参数++自增–自减情况分析(一)