在C++中,如果要循环删除哈希表中的元素,可以使用迭代器来实现。具体步骤如下:

  1. 获取哈希表的迭代器,使用begin()和end()函数获取起始和结束迭代器。

  2. 遍历哈希表,使用while循环和迭代器判断是否到达结束迭代器位置。

  3. 判断当前元素是否需要删除,如果需要删除,则使用erase()函数删除当前元素,并将迭代器指向下一个元素。

  4. 如果当前元素不需要删除,则将迭代器指向下一个元素。

以下是一个示例代码:

#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
    // 创建哈希表
    unordered_map<int, string> myMap = {
        {1, "apple"},
        {2, "banana"},
        {3, "orange"},
        {4, "pear"}
    };
    
    // 循环删除
    auto it = myMap.begin();
    while (it != myMap.end()) {
        if (it->first % 2 == 0) {
            it = myMap.erase(it);
        } else {
            ++it;
        }
    }
    
    // 输出结果
    for (auto& p : myMap) {
        cout << p.first << ": " << p.second << endl;
    }
    
    return 0;
}

上述代码中,循环删除了哈希表中键为偶数的元素,最后输出结果为:

1: apple
3: orange

注意,删除元素后,迭代器指向下一个元素可能会失效,因此需要使用erase()函数的返回值来更新迭代器。另外,删除元素后,哈希表的大小会改变,因此需要谨慎处理循环条件和迭代器指向。

c++ hashmap循环删除

原文地址: https://www.cveoy.top/t/topic/bSq0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录