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++.