Данные · Контейнеры и алгоритмы

Словари

std::map и std::unordered_map: поиск по ключу

~30 мин 7 шагов

После урока ты сможешь

  • Считать частоты и группировать данные по ключу
  • Выбирать между map и unordered_map
  • Проверять наличие ключа без случайной вставки

Шаг 1 из 7

Поиск по ключу

Записная книжка: по имени нужно быстро найти телефон. В векторе пришлось бы перебирать все записи одну за другой. Для поиска по ключу есть словари, или ассоциативные контейнеры. Они хранят пары «ключ → значение».

main.cpp
#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) возвращает значение, а если ключа нет, бросает исключение.