Может ли входной итератор быть разыменован только по правому знаку присваивания? - PullRequest
7 голосов
/ 26 сентября 2019

У меня есть такой простой вопрос: в учебнике по С ++ 5ed Липпмана глава 10. «Категории итераторов» сказано:

Категории итераторов

Входные итераторы: могут читатьэлементы в последовательности.Итератор ввода должен предоставить

  • Операторы равенства и неравенства (==, !=) для сравнения двух итераторов

  • Префикс и постфиксный приращение(++) для продвижения итератора

  • Оператор разыменования (*) для чтения элемента;разыменование может появляться только в правой части присваивания

  • Оператор стрелки (->) как синоним для (*it).member, то есть разыменовать итератор и извлечь aчлен из базового объекта.

Он имел в виду, что «Оператор разыменования (*) считывает элемент; разыменование может появляться только в правой частиназначение ": на" левой стороне назначения ". ??

Я запутался в этом.Спасибо.

1 Ответ

13 голосов
/ 26 сентября 2019

Автор имел в виду, что если у вас есть входной итератор it, то вы можете сделать:

foo = *it;

, но возможно, что вы не сможете сделать:

*it = foo;
* 1007Вы можете прочитать из итератора (это справа от назначения), но нет гарантии, что вы можете записать в него (это слева).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...