Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

MultiPassInputIterator

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Multi-Pass Input Iterator

Эта концепция представляет собой уточнение Input Iterator, добавляя требования, что итератор может использоваться для выполнения нескольких проходов через диапазон, и что если it1 == it2 и it1 является приемлемым, то ++it1 == ++it2. Многопропускной итератор очень похож на передний итератор . Разница лишь в том, что для итератора Forward требуется, чтобы тип reference был value_type&, тогда как MultiPassInputIterator похож на Input Iterator в том, что reference Тип должен быть конвертируемым в value_type.

Design Notes

комментарии Валентина Боннара:

Я думаю, что введение многоканального итератора ввода не является правильным решением. Вы также хотите определить Multi-Pass Bidirectionnal Iterator и Multi-Pass Random Access Iterator? Нет, конечно. Это только запутывает вопрос. Проблема кроется в существующей иерархии итераторов, которая смешивает изменчивость, модифицируемость и ценность, и они явно являются независимыми.

Термины Forward, Bidirectionnal и Random Access относятся к мовабилити и не должны использоваться для обозначения чего-либо еще. Полностью ортогональным способом итераторы могут быть неизменяемыми, мутируемыми или ни тем, ни другим. Ценность итераторов также ортогональна с иммутабиллией. С этими чистыми концепциями ваш многоканальный итератор ввода называется просто передовым итератором.

Другие переводы:
std::Forward Iterator -> ForwardIterator & Lvalue Iterator
std:: двунаправленный Iterator -> Bidirectionnal Iterator & Lvalue Iterator
std::Random Access Iterator -> Random Access Iterator & Lvalue Iterator

Обратите внимание, что на практике единственная операция, не разрешенная на моем переднем итераторе, разрешена на стенде: Forward Iterator &*it. Я думаю, что &* редко требуется в общем коде.

ответ Джереми Сика:

Вышеприведенный анализ Валентина является правильным. Конечно, существует проблема обратной совместимости. Текущие реализации STL основаны на старом определении Forward Iterator. Правильный курс действий заключается в изменении Forward Iterator и т.д. в стандарте C++. Как только это будет сделано, мы можем выбросить многоканальный итератор ввода.


Valid HTML 4.01 Transitional

Пересмотрено 05 Декабрь 200605 December, 2006[ORIG_END] -->

Copyright © 2000 Джереми Сиек, Univ.of Notre Dame (jsiek@lsc.nd.edu

Распространяется в соответствии с Лицензией на программное обеспечение Boost версии 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу http://www.boost.org/LICENSE_1_0.txt)

Статья MultiPassInputIterator раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 07:33:59/0.0035860538482666/0