входной итератор + выходной итератор + X = прямой итератор - PullRequest
2 голосов
/ 25 июня 2011

Я хочу решить уравнение в заголовке и найти X. Насколько я понимаю, входной или выходной итератор, в отличие от прямого итератора, становится недействительным, как только его копия выдвигается. Существуют ли какие-либо дополнительные требования для типа T, который удовлетворяет концепции входного итератора и концепции выходного итератора, чтобы соответствовать концепции прямого итератора?

В любом случае, можете ли вы привести реальный пример итератора, который является как входным, так и выходным, но не является прямым? Спасибо

Ответы [ 2 ]

7 голосов
/ 25 июня 2011

Категории итераторов имеют дело с операциями, разрешенными на итераторе.Разыменование прямого итератора должно давать T& (C ++ 03), тогда как разыменование входного итератора должно давать только тип, конвертируемый в T.Например, vector<bool>::iterator - это итератор ввода / вывода, но не прямой итератор (поскольку разыменование возвращает прокси, конвертируемое в bool - потому что вы не можете вернуть ссылку на бит).

0 голосов
/ 28 августа 2012

И согласно диаграмме здесь прямой итератор может быть построен по умолчанию, но входной или выходной итератор не может.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...