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