std::advance
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 15.10.25 20:18
Оценка:
Здравствуйте!

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

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

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

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


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