Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Итераторы ввода и вывода


Автор: Jcs 28.2.2004, 20:21
Как известно, в STL есть куча всяких типов итераторов - двунаправленные, реверсивные, произвольного доступа и т.д. Есть еще итераторы ввода и вывода. Как я думаю они должны отличаться операциями для них разрешенными. Итератор ввода позволяет изменять содержимое контейнера, итератор вывода - нет может, соответственно возращаемый тип первого ссылка, второго - константная ссылка. Или я не прав? Просто в описании STL написано
Цитата
Имеется дополнительный атрибут, который могли быть иметь последовательные, двунаправленные и произвольного доступа итераторы, то есть они могут быть модифицируемые (mutable) или постоянные (constant) в зависимости от того, ведёт ли себя результат operator* как ссылка или как ссылка на константу. Постоянные итераторы не удовлетворяют требованиям итераторов вывода.
Смысл последнего предложения не совсем ясен - если это итератор вывода, то почему он не может быть постоянным? Если кто разъяснит - буду оченть благодарен.

Автор: srd 28.2.2004, 20:41
Потому что под output-итератором понимается итератор для записи, а под input-итератором - итератор для чтения, а не наоборот. ИМХО, лучше пользоваться этой терминологией - итератор для записи, итератор для чтения, т.к. она используется в русском переводе книги Страуструпа.

Автор: Jcs 28.2.2004, 22:33
То есть терминолгия ввод и вывод применяется к итератору, а не к контейнеру? Итератор вывода - значит итератор, в который можно записать (вывести из контейнера итем), а итератор ввода соответственно - итератор, из которого можно ввести итем в контейнер?

Автор: srd 28.2.2004, 22:54
Точно так.

Автор: Jcs 28.2.2004, 23:22
Витиевато, однако)) Но Страуструпу виднее. Спасибо за ответ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)