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