在C++中,如果你刪除了一個map
中的元素,那么相應的迭代器將會失效,不能再使用。通常,刪除元素后,你可以將迭代器移動到下一個位置,或者重新獲取一個新的迭代器。
以下是一個例子,演示如何在刪除元素后處理迭代器:
#include <iostream>
#include <map>
int main() {
std::map<int, int> myMap = { {1, 10}, {2, 20}, {3, 30} };
for (auto it = myMap.begin(); it != myMap.end(); ) {
if (it->first == 2) {
it = myMap.erase(it);
} else {
++it;
}
}
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
在上面的例子中,我們通過循環遍歷map
,如果鍵值等于2,就刪除這個元素并將迭代器移動到下一個位置;否則,只是將迭代器移動到下一個位置。最后,我們再次遍歷map
打印出剩余的元素。