В чем разница в получении значения через aMap[key] и aMap.at(key) в С++?
Разница между map [] и map.at в С++?
Ответ 1
В С++ существует 11 map::at (кто знал?).
Он выдает исключение, если ключ не существует, find возвращает aMap.end(), если этот элемент не существует, а operator[] значение инициализирует новое значение для соответствующего если нет значения.
Ответ 2
Если вы получаете доступ к ключу с помощью оператора индексирования [], который в настоящее время не является частью карты, то он автоматически добавляет вам ключ. Это огромное оговорка и принять это во внимание. По этой причине я предпочитаю использовать оператор индексирования [] для установки и .find()/.at() для поиска.
Другим преимуществом использования .at() over [] является то, что он может работать на const std::map, тогда как [] не будет.