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

Chương trình C++ triển khai Map trong STL

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