C++ 在遍历 HashMap 时使用键从 HashMap 中删除条目

c++server side programmingprogramming

本教程将讨论如何在遍历 HashMap 时使用键从 HashMap 中删除条目。例如,

Input: HashMap: { 1: “Tutorials”,
                  2: “Tutorials”,
                  3: “Point” }, key=1

Output: HashMap: { 2: “Tutorials”,
                   3: “Point” }.

Explanation: The first element is removed using key ‘1’.

Input: HashMap: { 1: “God”,
                  2: “is”,
                  3: “Great” }, key=2

Output: HashMap: { 1: “God”,
                   3: “Great” }.

寻找解决方案的方法

在 C++ 中,我们可以在 .erase() 函数中使用键名来使用键删除条目。但在这里,我们需要在迭代它时删除它,所以我们也需要一个迭代器。

在这里,我们将迭代哈希图并检查是否每个键都已被删除,并在键匹配时删除条目。

示例

上述方法的 C++ 代码

无迭代

以下是用于在不迭代 HashMap 的情况下删除元素的代码。

#include<iostream>
#include<map> // 用于映射操作
using namespace std;
int main(){  
    // 创建 HashMap。
    map< int, string > mp;
    // 在 Hashmap 中插入键值对。
    mp[1]="Tutorials";
    mp[2]="Tutorials";
    mp[3]="Point";
    int key = 2;
    // 创建迭代器。
    map<int, string>::iterator it ;
    // 打印初始 Hashmap。
    cout<< "删除前的HashMap:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" < it->second << endl;
    mp.erase(key);
    // 打印删除后的Hashmap。
    cout<< "删除后的HashMap:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

输出

删除前的 HashMap:
1->教程
2->教程
3->Point

删除后的 HashMap:
1->教程
3->Point

示例

在 HashMap 上迭代时删除元素

#include<iostream>
#include<map> // 用于映射操作
使用命名空间 std;
int main(){  
    // 创建 HashMap。
    map< int, string > mp;
    // 在 Hashmap 中插入键值对。
    mp[1]="Tutorials";
    mp[2]="Tutorials";
    mp[3]="Point";
    int key = 2;
    // 创建迭代器。
    map<int, string>::iterator it ;
    // 打印初始 Hashmap。
    cout<< "删除前的 HashMap:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" < it->second << endl;
        // 迭代 HashMap。
    for (it = mp.begin(); it!=mp.end(); ++it){
          int a=it->first;
        // 检查迭代器键是否具有所需键。
        if(a==key){
            // 删除元素。
            mp.erase(it);
          }
    }
    // 删除后打印 Hashmap。
    cout<< "HashMap After Deletion:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

输出

删除前的 HashMap:
1->Tutorials
2->Tutorials
3->Point

删除后的 HashMap:
1->Tutorials
3->Point

结论

在本教程中,我们讨论了如何从 HashMap 中删除条目。我们讨论了两种删除条目的方法,一种是迭代它,一种是不迭代它。我们还讨论了这个问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来完成。我们希望本教程对您有所帮助。


相关文章