Как создается объект значения в случае, если key не присутствует при использовании оператора [] для unordered_map? - PullRequest
0 голосов
/ 07 марта 2019

В unordered_map, когда мы используем оператор [], чтобы получить значение для ключа, тогда, если ключ отсутствует, он выполняет вставку. Я хочу понять, как это реализовано.

std::unordered_map<int, int> x;
x[1] = 10;

В приведенном выше утверждении, как получить доступ к rvalue 10 и использовать его для вставки?

1 Ответ

2 голосов
/ 07 марта 2019

Очень просто.

Оператор [] для std::map и std::unordered_map ищет элемент с заданным ключом.Если элемент присутствует, он возвращает ссылку на second член его пары.Если его нет, он создает новую пару с ключом (first), равным данному ключу, и значение с инициализацией second, вставляет этот элемент и возвращает ссылку на second.

Тогда operator= работает нормально.

...