Информация об изменениях

Сообщение std::advance от 15.10.2025 20:18

Изменено 15.10.2025 20:21 Marty

std::advance
Здравствуйте!

Почему std::advance не возвращает инкрементированный итератор, а инкрементирует его по ссылке на него?

Неудобно же блин, кучу телодвижений надо делать. Использую не слишком часто, поэтому ещё не привык и каждый раз плююсь.

Ну ладно, окей, может быть какие-то итераторы не копируются, или их копирование тяжёлое, а по ссылке всегда сработает оптимально. Но можно же было например сделать либо std::advance, который возвращает инкрементированное значение, и std::advance_inplace — обновляет по ссылке. Или — std::advance — работает по ссылке, а std::advance_copy — возвращает инкрементированную копию.

А я уж сам бы решил, inplace мне инкрементировать, или получать инкрементированную копию?
std::advance
Здравствуйте!

Почему std::advance не возвращает инкрементированный итератор, а инкрементирует его по ссылке на него?

Неудобно же блин, кучу телодвижений надо делать. Использую не слишком часто, поэтому ещё не привык и каждый раз плююсь.

Ну ладно, окей, может быть какие-то итераторы не копируются, или их копирование тяжёлое, а по ссылке всегда сработает оптимально. Но можно же было например сделать либо std::advance, который возвращает инкрементированное значение, и std::advance_inplace — обновляет по ссылке. Или — std::advance — работает по ссылке, а std::advance_copy — возвращает инкрементированную копию.

А я уж сам бы решил, inplace мне инкрементировать, или получать инкрементированную копию?


И да, немножко диссонанс с парной функцией std::distance, которая возвращает новое значение. Так-то понятно, что std::distance никак не может работать по ссылке, но могли бы std::advance сделать с аналогичной семантикой