溫馨提示×

C++ unordered_map遍歷時如何刪除元素

c++
小樊
631
2024-07-25 00:45:18
欄目: 編程語言

在C++中,當遍歷unordered_map并刪除元素時,我們需要注意一些事項。因為在遍歷過程中刪除元素可能會導致迭代器失效,所以我們不能直接在循環中刪除元素。以下是一種可行的方法:

  1. 遍歷unordered_map并將需要刪除的鍵值對放入一個臨時的容器中,而不是直接刪除它們。
  2. 遍歷結束后,再根據臨時容器中的鍵值對來刪除元素。

以下是一個示例代碼:

#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容器中,然后再根據這些鍵刪除元素。這樣可以避免迭代器失效的問題。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女