C++ 在迭代 HashMap 时使用值删除条目

c++server side programmingprogramming

讨论如何在迭代 HashMap 时使用值删除条目,例如

Input: HashMap: { 1: “ Mango ”,
2: “ Orange ”,
3: “ Banana ”,
4: “Apple ” }, value=”Banana”

Output: HashMap: { 1: “ Mango ”,
2: “ Orange ”,
4: “Apple ” }.

Explanation: The third key-value pair is removed using the value “banana”.

Input: HashMap: { 1: “Yellow”,
2: “White”,
3: “Green” }, value=”White”

Output: HashMap: { 1: “Yellow”,
3: “Green” }.

寻找解决方案的方法

在 C++ 中,我们可以使用 .erase() 函数删除元素。在 eras() 函数中,我们可以使用键名或迭代器删除元素。在本教程中,我们将讨论使用迭代器删除元素。

在这里,我们将遍历哈希图并检查是否删除了每个值,并在值匹配时删除条目。

示例

上述方法的 C++ 代码

在遍历 HashMap 时删除元素

#include<iostream>
#include<map> // 用于映射操作
using namespace std;
int main(){  
    // 创建 HashMap。
    map< int, string > fruit;
    // 在 Hashmap 中插入键值对。
    fruit[1]="Mango";
    fruit[2]="Orange";
    fruit[3]="Banana";
    fruit[4]="Apple";
    string value = "Banana";
    // 创建迭代器。
    map<int, string>::iterator it ;
    // 打印初始 Hashmap。
    cout<< "删除前的HashMap:\n";
    for (it = fruit.begin(); it!=fruits.end(); ++it)
        cout << it->first << "->" < < it->second << endl;
    for (it = fruit.begin(); it!=fruits.end(); ++it){
        string temp = it->second;
        // 检查迭代器值是否具有所需值。
        if(temp.compare(value) == 0){
            // 删除元素。
            fruit.erase(it);

        }
    }
    // 删除后打印 Hashmap。
    cout<< "HashMap After Deletion:\n";
    for (it = fruits.begin(); it!=fruits.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

输出

HashMap before Deletion:
1->Mango
2->Orange
3->Banana
4->Apple

HashMap After Deletion:
1->Mango
2->Orange
4->Apple

结论

在本教程中,我们讨论了如何使用值从 HashMap 中删除条目。我们讨论了通过迭代来删除条目的方法。我们还讨论了这个问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来完成。我们希望您觉得本教程有用。


相关文章