Класс unordered_map
Класс unordered_map - это ассоциативный контейнер, который хранит элементы в виде пар "ключ-значение". В отличие от обычного map, элементы здесь не упорядочены по ключу, а хранятся в хеш-таблице. Это обеспечивает очень быстрый доступ к элементам по ключу - в среднем за константное время O(1). При создании объекта можно указать тип ключа и тип значения. Например, unordered_map<string, int> создаст словарь, где ключами будут строки, а значениями - целые числа.
Синтаксис
#include <unordered_map>
unordered_map<KeyType, ValueType> name;
Пример
Давайте создадим словарь, который сопоставляет строковые ключи целочисленным значениям, и выведем его содержимое:
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main()
{
unordered_map<string, int> umap;
umap["one"] = 1;
umap["two"] = 2;
umap["three"] = 3;
for (auto& pair : umap)
{
cout << pair.first << " : " << pair.second << endl;
}
return 0;
}
Результат выполнения кода (порядок может отличаться):
"three : 3"
"two : 2"
"one : 1"
Пример
Давайте получим значение по ключу с помощью метода at и проверим наличие ключа с помощью метода count:
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main()
{
unordered_map<string, int> umap = {
{"one", 1},
{"two", 2}
};
cout << umap.at("one") << endl;
cout << umap.count("two") << endl;
cout << umap.count("three") << endl;
return 0;
}
Результат выполнения кода:
1
1
0