Re[6]: Можно ли и как канонично получить из итератора тип эл
От: rg45 СССР  
Дата: 22.04.25 14:58
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Изменение по месту я понимаю так:

BFE>
BFE>*it = 'a';
BFE>*it = 'b';
BFE>

BFE>результат: "...b...", а не "...ab...".

К результату "ab" могут привести, разве что, такие специальные виды итераторов, как back_insert_iterator и ostream_iterator. Но эти операторы — это особый случай — у них операция инкремента, хоть и существует формально, но не имеет никакого эффекта. У этих итераторов операции *it = 'a' и *it++ = 'a' имеют один и тот же результат.

В самом же общем случае итератор является обобщением указателя и для того, чтобы получить последовательность ("ab"), итератор нужно инкрементить. Что и делают алгоритмы тип std::copy, std::fill, etc. А без этого инкремента это и будет многократное изменение одного и того же элемента (изменение по месту, как ты это называешь).
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 22.04.2025 15:28 rg45 . Предыдущая версия . Еще …
Отредактировано 22.04.2025 15:26 rg45 . Предыдущая версия .
Отредактировано 22.04.2025 15:24 rg45 . Предыдущая версия .
Отредактировано 22.04.2025 15:19 rg45 . Предыдущая версия .
Отредактировано 22.04.2025 15:18 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.