Контейнер С++ vector, deque,... предоставляют функцию at(index) accessor в дополнение к operator[index] для доступа к элементам контейнера.
Я никогда не нуждался в этой функции в своем коде, поскольку в моем коде на С++ нет смысла обращаться к элементам, которые, возможно, вне диапазона. Код всегда записывается для доступа к правильным индексам (или создает значимую ошибку/исключение в случае, если индексы не могут быть сопоставлены.)
Мне бы интересны примеры в реальном мире (возможно, из какого-то проекта с открытым исходным кодом, поскольку это добавит некоторый контекст), где at() используется в производственном коде.
Возможно, кто-то может привести пример алгоритмической проблемы, где использование at() имеет смысл.
Примечание. Я недавно использовал его в каком-то единичном тестовом коде, где добавление кода проверки индекса не считалось стоящим проблемой, а исключение out_of_range, созданное at(), считается достаточным info + context в случае, если тестовые перерывы.
Примечание: Что касается этого ответа от ildjarn - я не хочу начинать дискуссию или комментировать войну. Я интересен в "позитивных" находках, то есть конкретных примерах, где он использовался. Спасибо.