Class template eof_iterator
boost::eof_iterator
Synopsis
Description
eof_iteratorКласс полезен для построения форвардных итераторов в тех случаях, когда итератор извлекает данные из какого-либо источника и легко обнаруживает «eof» — т.е. ситуацию, когда данных нет. Одним из очевидных примеров является чтение строк из файла.
Внедрение таких итераторов с использованием «iterator_facade» напрямую потребовало бы создания класса с тремя основными операциями. При использовании 'eof_iterator' производный класс должен определять только один способ получения нового значения плюс пара конструкторов.
Основная идея заключается в том, что итератор имеет бит «eof». Два итератора равны только в том случае, если оба имеют набор битов «eof». Метод «get» либо получает новое значение, либо устанавливает бит «eof».
В частности, производный класс должен определять:
Конструктор по умолчанию, который создает итератор с битовым набором «eof». Тело конструктора должно называться методом «found_eof», определенным здесь.
Еще один конструктор. Он должен инициализировать некоторый «указатель данных», используемый в работе итератора, а затем вызывать «get».
[см.] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто]].
[ORIG_END] -->извлекать новый элемент и хранить его в месте, возвращенном методом «значения».
Продвиньте указатель данных.
По сути, метод «get» имеет функциональность как «прироста», так и «отсчета». Это очень хорошо для случаев, когда извлечение данных неявно перемещает указатель данных, например, для работы потока.
eof_iterator
public
construct/copy/destruct
eof_iterator
protected member functions
Возвращаясь к подсвечнику, мы имеем дело с фиксатором.
[ORIG_END] -->] [
] [
] [
]] [
]] [
]] [[
]]] [[
]]]] [[
]]]] [[
]]]] [[
]]] [[
]]]] [[
]]]] [[
]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]]] [[[[[]]]]]] [[[[[]]]]]] [[[[]]]]]] [[[[[]]]]]]] [[[[[]]]]]] [[[[]]]]
[ORIG_END] -->
eof_iterator
private member functions
- <
voidincrement();
> - <
boolequal(consteof_iterator&other)const;
> - <
constValueType&dereference()const;
>