您的位置:首页 > 编程语言 > C语言/C++

C++ ATL 中list中删除操作

2016-01-11 19:57 309 查看
初学者在使用链表删除遍历中经常会报这样一个错误:list iterator not incrementable,错误的原因可能如下

for (it = stu.begin();it != stu.end();it++)
{
if (strcmp(p,it->m_Name) == 0)
{
it = stu.erase(it);
}
}

因为earse后会把迭代器释放掉,故再一次for循环的时候则会报错。

正确的方法只要稍微改动一下就可以实现了,

下面说下如何删除一个对象数据,只要在erase()后面加上break语句即可

for (it = stu.begin();it != stu.end();)

{
if (strcmp(p,it->m_Name) == 0)
{
it = stu.erase(it);

break;

}

else{

it++;

}

}

如果要删除掉所有匹配的数据,则把break去掉即可.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: