Map
map
— это ассоциативный контейнер: он содержит пары ключ-значение, при этом все ключи уникальны. Внутри контейнера все ключи упорядочены по возрастанию. Так же, как и в set
, операции работают за логарифмическое время.
Объявление map
выглядит так: map<T1, T2> map_name
, где T1
— тип ключа, T2
— тип значения.
Доступ к элементам map
осуществляется с помощью оператора []
. map
, аналогично set
, поддерживает поиск по ключу с помощью find
, lower_bound
, upper_bound
. При разыменовании итератора получается пара, первый элемент которой — ключ, второй — значение.
При обращении к несуществующему элементу map
с помощью []
, значение инициализируется значением по умолчанию для данного типа.
Рассмотрим работу map
на примере:
map<int, int> a;
a[13] = 5;
a[2] = 7;
cout << a[2] << "\n"; // выведет 7
a[2]++;
cout << a[2] << "\n"; // выведет 8
a[100] = 42;
/* Следующий цикл выведет 3 строки:
2 8
13 5
100 42
Обратите внимание, что ключи упорядочены.
*/
for (auto el : a) {
cout << el.first << " " << el.second << "\n";
}
map<string, int> b;
b["Bob"]--;
b["Alice"] += 2;
b["Dan"] = 123;
/* Этот цикл выведет 2 строки:
Alice 2
Bob -1
Dan 123
*/
for (auto el : b) {
cout << el.first << " " << el.second << "\n";
}
map<string, vector<int>> c;
c["wow"].push_back(2);
c["abc"] = {2, -1, 17};
cout << c["abc"].size() << "\n"; // выведет 3
Автор конспекта: Егор Гутров
По всем вопросам пишите в telegram @egor_gutrov