QMap erase
时间: 2024-06-14 17:08:37 浏览: 174
QMap的erase函数用于删除指定的元素。根据引用和引用的描述,使用erase函数后,迭代器指针会失效,再次调用会导致崩溃。为了避免这个问题,建议在erase操作后,更新迭代器指针的位置,可以使用it = mapIntToInt.erase(it)的形式。下面是一个示例代码,演示了如何在for循环中使用QMap的erase函数:
```cpp
QMap<int, int> mapIntToInt;
mapIntToInt.insert(1, 10);
mapIntToInt.insert(2, 20);
mapIntToInt.insert(3, 30);
mapIntToInt.insert(4, 40);
QMap<int, int>::iterator it;
for (it = mapIntToInt.begin(); it != mapIntToInt.end(); ) {
int num = it.key();
qDebug() << "The current number is " << num;
if (num % 2 == 0) {
it = mapIntToInt.erase(it);
qDebug() << "Erased number: " << num;
} else {
++it;
}
}
```
在上述示例中,我们创建了一个QMap对象mapIntToInt,并插入了四个键值对。然后,我们使用for循环遍历mapIntToInt,并根据条件删除偶数键值对。在删除操作后,我们使用it = mapIntToInt.erase(it)更新迭代器指针的位置,以避免迭代器失效的问题。
阅读全文