Словари
std::map и std::unordered_map: поиск по ключу
После урока ты сможешь
- Считать частоты и группировать данные по ключу
- Выбирать между map и unordered_map
- Проверять наличие ключа без случайной вставки
Шаг 1 из 7
Поиск по ключу
Записная книжка: по имени нужно быстро найти телефон. В векторе пришлось бы перебирать все записи одну за другой. Для поиска по ключу есть словари, или ассоциативные контейнеры. Они хранят пары «ключ → значение».
#include <map>
#include <print>
#include <string>
int main() {
std::map<std::string, std::string> phones;
phones["Аня"] = "+7 900 111-22-33";
phones["Борис"] = "+7 900 444-55-66";
phones["Аня"] = "+7 999 000-00-00"; // ключ уже есть — значение заменяется
std::println("Телефон Ани: {}", phones.at("Аня"));
std::println("Записей: {}", phones.size());
}
std::map<Ключ, Значение> хранит каждый ключ один раз. phones[key] = value добавляет пару или заменяет значение. phones.at(key) возвращает значение, а если ключа нет, бросает исключение.