在C++中,使用std::map
的erase()
函數刪除一個元素時,會使得傳入的迭代器無效化。這意味著如果你嘗試在刪除元素后繼續使用該迭代器,就會導致未定義的行為。
如果您要在刪除元素后繼續迭代std::map
,您應該在刪除元素之后遞增迭代器,而不是繼續使用已刪除的迭代器。另外,您還可以使用std::map
的find()
函數來查找下一個元素的迭代器。
以下是一個示例代碼,展示了如何在刪除元素后繼續迭代std::map
:
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
myMap[1] = "one";
myMap[2] = "two";
myMap[3] = "three";
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;
}
在上面的示例中,我們刪除了鍵為2的元素,并且在刪除后繼續遍歷std::map
。