Qt下安全遍历删除 QList QMap QSet容器内容
程序员文章站
2024-02-12 12:36:34
...
使用迭代器方式的问题是 erase 删除 后需要赋值给自身,不方便。
使用容器数量for来删除的问题是,删除后容器数量变化不合适。
最最最简单的就是使用QMapIterator QListIterator QSetIterator 这一类对象来操作。
如下:其它 QList QSet 一样的删除。
QMap<int, int> mapt;
for (int i = 0 ;i<10;i++)
{
mapt.insert(i, i * i);
}
QMapIterator<int, int>it(mapt);
while (it.hasNext())
{
it.next();
mapt.remove(it.key());
}
以下是老旧的c++方式,不好用。
for (auto item = mapt.begin();item!=mapt.end();)
{
if (item.key() == 1)
{
item = mapt.erase(item);
continue;
}
item++;
}
这种方式最难用,QMap不可以用
for (int count = 0;count < mapt.size();count++)
{
//--------
}