C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++反復中に、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> // for map operations
using namespace std;
int main(){  
    // Creating HashMap.
    map< int, string > mp;
    // Inserting key-value pair in Hashmap.
    mp[1]="Tutorials";
    mp[2]="Tutorials";
    mp[3]="Point";
    int key = 2;
    // Creating iterator.
    map<int, string>::iterator it ;
    // Printing the initial Hashmap.
    cout<< "HashMap before Deletion:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    mp.erase(key);
    // Printing Hashmap after deletion.
    cout<< "HashMap After Deletion:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

出力

HashMap before Deletion:
1->Tutorials
2->Tutorials
3->Point

HashMap After Deletion:
1->Tutorials
3->Point

HashMapの反復中に要素を削除

#include<iostream>
#include<map> // for map operations
using namespace std;
int main(){  
    // Creating HashMap.
    map< int, string > mp;
    // Inserting key-value pair in Hashmap.
    mp[1]="Tutorials";
    mp[2]="Tutorials";
    mp[3]="Point";
    int key = 2;
    // Creating iterator.
    map<int, string>::iterator it ;
    // Printing the initial Hashmap.
    cout<< "HashMap before Deletion:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
        // Iterating over HashMap.
    for (it = mp.begin(); it!=mp.end(); ++it){
        int a=it->first;
        // Checking iterator key with required key.
        if(a==key){
            // erasing Element.
            mp.erase(it);
        }
    }
    // Printing Hashmap after deletion.
    cout<< "HashMap After Deletion:\n";
    for (it = mp.begin(); it!=mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

出力

HashMap before Deletion:
1->Tutorials
2->Tutorials
3->Point

HashMap After Deletion:
1->Tutorials
3->Point

結論

このチュートリアルでは、HashMapからエントリを削除する方法について説明しました。繰り返し処理を行うエントリと、繰り返し処理しないエントリを削除する2つの方法について説明しました。また、C、Java、Pythonなどのプログラミング言語で実行できるこの問題のC++プログラムについても説明しました。このチュートリアルがお役に立てば幸いです。


  1. C++を使用して文字列から特定の単語を削除する

    この記事では、特定の文字列から特定の単語を削除する問題を解決します。例- Input : str = “remove a given word ”, word = “ remove ” Output : “ a given word ” Input : str = “ god is everywhere ”, word = “ is ” Output : “ god everywhere ” 解決策を見つけるためのアプローチ たとえば、単純なアプロ

  2. C++キューを使用してBSTのパスを逆にする

    たとえば、二分探索木が与えられ、特定のキーからそのパスを逆にする必要があります。 解決策を見つけるためのアプローチ このアプローチでは、キューを作成し、ルートを取得するまですべてのノードをプッシュします。 例   #include <bits/stdc++.h> using namespace std; struct node {    int key;    struct node *left, *right; }; struct node* newNode(int item){    struc