Подтвердить что ты не робот

Разница между map [] и map.at в С++?

В чем разница в получении значения через aMap[key] и aMap.at(key) в С++?

4b9b3361

Ответ 1

В С++ существует 11 map::at (кто знал?).

Он выдает исключение, если ключ не существует, find возвращает aMap.end(), если этот элемент не существует, а operator[] значение инициализирует новое значение для соответствующего если нет значения.

Ответ 2

Если вы получаете доступ к ключу с помощью оператора индексирования [], который в настоящее время не является частью карты, то он автоматически добавляет вам ключ. Это огромное оговорка и принять это во внимание. По этой причине я предпочитаю использовать оператор индексирования [] для установки и .find()/.at() для поиска.

Другим преимуществом использования .at() over [] является то, что он может работать на const std::map, тогда как [] не будет.