Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xóa entry khỏi HashMap theo key khi đang duyệt bằng C++


Cho map, xóa phần tử có key cho trước trong khi đang duyệt. Hai cách: không duyệt (gọi erase(key) trực tiếp) và có duyệt (so sánh it->first).

Cách 1: Không duyệt (trực tiếp)

mp.erase(key); // O(log N)

Cách 2: Duyệt + iterator

for (it = mp.begin(); it != mp.end(); ++it) {
    if (it->first == key) { mp.erase(it); break; }
}

Ví dụ đầy đủ

#include<iostream> #include<map>
using namespace std;

int main() {
    map<int, string> mp;
    mp[1]="Tutorials"; mp[2]="Tutorials"; mp[3]="Point";
    int key = 2;
    map<int, string>::iterator it;
    cout << "HashMap before Deletion:\n";
    for (it = mp.begin(); it != mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    for (it = mp.begin(); it != mp.end(); ++it) {
        if (it->first == key) { mp.erase(it); break; }
    }
    cout << "HashMap After Deletion:\n";
    for (it = mp.begin(); it != mp.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

Kết quả

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

Kết luận

Xóa entry khỏi map theo key: trực tiếp erase(key) hoặc duyệt iterator so sánh key. Code C++.