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