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

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


Cho map, xóa phần tử có value cho trước trong khi đang duyệt. Ví dụ: xóa value="Banana".

Cách làm: Iterator + erase()

Duyệt bằng iterator. So sánh it->second với value cần xóa. Nếu khớp → map.erase(it). Lưu ý: erase(it) trả về iterator hợp lệ (C++11), nhưng code mẫu dùng cách an toàn là không tăng iterator sau erase (hoặc dùng while).

Ví dụ

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

int main() {
    map<int, string> fruits;
    fruits[1]="Mango"; fruits[2]="Orange"; fruits[3]="Banana"; fruits[4]="Apple";
    string value = "Banana";
    map<int, string>::iterator it;
    cout << "HashMap before Deletion:\n";
    for (it = fruits.begin(); it != fruits.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    for (it = fruits.begin(); it != fruits.end(); ++it) {
        string temp = it->second;
        if (temp.compare(value) == 0) fruits.erase(it);
    }
    cout << "HashMap After Deletion:\n";
    for (it = fruits.begin(); it != fruits.end(); ++it)
        cout << it->first << "->" << it->second << endl;
    return 0;
}

Kết quả

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

Kết luận

Xóa phần tử khỏi map theo value khi đang duyệt bằng iterator và erase(). Code C++.