map là container liên kết lưu trữ cặp (khóa, giá trị) với khóa duy nhất và được sắp xếp tự động tăng dần theo khóa.
Các hàm chính
- m.find(key) – Iterator đến phần tử có khóa, hoặc
end(). - m.erase(key/it) – Xóa theo khóa hoặc iterator.
- m.equal_range(key) – Cặp iterator bao phủ phạm vi khóa (với map luôn 0 hoặc 1 phần tử).
- m.insert(pair) – Chèn cặp key-value.
- m.size() – Số phần tử.
- m.count(key) – 1 nếu khóa tồn tại, 0 nếu không.
Ví dụ mã
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
map<char, int> m;
map<char, int>::iterator it;
m.insert(pair<char, int>('a', 10));
m.insert(pair<char, int>('b', 20));
m.insert(pair<char, int>('c', 30));
m.insert(pair<char, int>('d', 40));
cout << "Kích thước: " << m.size() << endl;
cout << "Map:\n";
for (it = m.begin(); it != m.end(); ++it)
cout << (*it).first << " => " << (*it).second << '\n';
for (char c = 'a'; c <= 'd'; ++c) {
cout << "Khóa '" << c << "': " << m.count(c) << " phần tử: ";
for (it = m.equal_range(c).first; it != m.equal_range(c).second; ++it)
cout << ' ' << (*it).second;
cout << endl;
}
if (m.count('a')) cout << "Khóa 'a' tồn tại\n";
else cout << "Khóa 'a' không tồn tại\n";
if (m.count('f')) cout << "Khóa 'f' tồn tại\n";
else cout << "Khóa 'f' không tồn tại\n";
it = m.find('b');
m.erase(it);
cout << "Sau xóa 'b':\n";
cout << "Kích thước: " << m.size() << endl;
for (it = m.begin(); it != m.end(); ++it)
cout << (*it).first << " => " << (*it).second << '\n';
return 0;
}
Kết quả
Kích thước: 4 Map: a => 10 b => 20 c => 30 d => 40 Khóa 'a': 1 phần tử: 10 Khóa 'b': 1 phần tử: 20 Khóa 'c': 1 phần tử: 30 Khóa 'd': 1 phần tử: 40 Khóa 'a' tồn tại Khóa 'f' không tồn tại Sau xóa 'b': Kích thước: 3 Map: a => 10 c => 30 d => 40