在C++中,當遍歷unordered_map
并刪除元素時,我們需要注意一些事項。因為在遍歷過程中刪除元素可能會導致迭代器失效,所以我們不能直接在循環中刪除元素。以下是一種可行的方法:
unordered_map
并將需要刪除的鍵值對放入一個臨時的容器中,而不是直接刪除它們。以下是一個示例代碼:
#include <iostream>
#include <unordered_map>
#include <vector>
int main() {
std::unordered_map<int, std::string> myMap = {
{1, "apple"},
{2, "banana"},
{3, "cherry"}
};
std::vector<int> keysToDelete;
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
if (it->first % 2 == 0) {
keysToDelete.push_back(it->first);
}
}
for (int key : keysToDelete) {
myMap.erase(key);
}
for (auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
在上面的示例中,我們遍歷unordered_map
,將所有偶數鍵值對的鍵存入keysToDelete
容器中,然后再根據這些鍵刪除元素。這樣可以避免迭代器失效的問題。