June 7th, 2014

nyaload

[i] или .at()

В С++ для библиотечного динамического массива std::vector при ошибке индексирования операция v[i] крашит процесс или возвращает ссылку на мусор, а метод .at(i) - кидает исключение в случае ошибки.

Выбор между v[i] и .at(i) я почти формально делаю так - если доказательство корректности v[i] тривиально следует из видимого экрана кода - ну ок. Например, типичный for от 0 до size(). Иначе я злобно кусаюсь и прошу переделать на .at().

Я лично бы сунул проверку и в operator[], но владельцы std::vector не дают.