Map: различия между версиями
Материал из Algocode wiki
(init) |
м (added <code> tag) |
||
Строка 3: | Строка 3: | ||
Объявление <code>map</code> выглядит так: <code>map<T1, T2> map_name</code>, где <code>T1</code> — тип ключа, <code>T2</code> — тип значения. | Объявление <code>map</code> выглядит так: <code>map<T1, T2> map_name</code>, где <code>T1</code> — тип ключа, <code>T2</code> — тип значения. | ||
− | Доступ к элементам <code>map</code> осуществляется с помощью оператора []. <code>map</code>, аналогично <code>set</code>, поддерживает поиск по ключу с помощью <code>find</code>, <code>lower_bound</code>, <code>upper_bound</code>. При разыменовании итератора получается пара, первый элемент которой — ключ, второй — значение. | + | Доступ к элементам <code>map</code> осуществляется с помощью оператора <code>[]</code>. <code>map</code>, аналогично <code>set</code>, поддерживает поиск по ключу с помощью <code>find</code>, <code>lower_bound</code>, <code>upper_bound</code>. При разыменовании итератора получается пара, первый элемент которой — ключ, второй — значение. |
При обращении к несуществующему элементу <code>map</code> с помощью <code>[]</code>, значение инициализируется значением по умолчанию для данного типа. | При обращении к несуществующему элементу <code>map</code> с помощью <code>[]</code>, значение инициализируется значением по умолчанию для данного типа. |
Версия 09:54, 27 сентября 2019
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