C++ unordered_map遍历时如何删除元素

   2024-10-05 6450
核心提示:在C++中,当遍历unordered_map并删除元素时,我们需要注意一些事项。因为在遍历过程中删除元素可能会导致迭代器失效,所以我们不

在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容器中,然后再根据这些键删除元素。这样可以避免迭代器失效的问题。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号