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

Class template eof_iterator

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

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

PrevUpHomeNext

Class template eof_iterator

boost::eof_iterator

Synopsis

// In header: <boost/program_options/eof_iterator.hpp>
template<typename Derived, typename ValueType> 
class eof_iterator :
  public iterator_facade< Derived, const ValueType, forward_traversal_tag >
{
public:
  // construct/copy/destruct
  eof_iterator();
  // protected member functions
  ValueType & value();
  void found_eof();
  // private member functions
  void increment();
  bool equal(const eof_iterator &) const;
  const ValueType & dereference() const;
};

Description

eof_iteratorКласс полезен для построения форвардных итераторов в тех случаях, когда итератор извлекает данные из какого-либо источника и легко обнаруживает «eof» — т.е. ситуацию, когда данных нет. Одним из очевидных примеров является чтение строк из файла.

Внедрение таких итераторов с использованием «iterator_facade» напрямую потребовало бы создания класса с тремя основными операциями. При использовании 'eof_iterator' производный класс должен определять только один способ получения нового значения плюс пара конструкторов.

Основная идея заключается в том, что итератор имеет бит «eof». Два итератора равны только в том случае, если оба имеют набор битов «eof». Метод «get» либо получает новое значение, либо устанавливает бит «eof».

В частности, производный класс должен определять:

  1. Конструктор по умолчанию, который создает итератор с битовым набором «eof». Тело конструктора должно называться методом «found_eof», определенным здесь.

  2. Еще один конструктор. Он должен инициализировать некоторый «указатель данных», используемый в работе итератора, а затем вызывать «get».

    • [см.] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто] [скрыто]].

      [ORIG_END] -->
    • извлекать новый элемент и хранить его в месте, возвращенном методом «значения».

    • Продвиньте указатель данных.

По сути, метод «get» имеет функциональность как «прироста», так и «отсчета». Это очень хорошо для случаев, когда извлечение данных неявно перемещает указатель данных, например, для работы потока.

eof_iterator public construct/copy/destruct

  1. <
    eof_iterator();
    >

eof_iterator protected member functions

  1. Возвращаясь к подсвечнику, мы имеем дело с фиксатором.

    [ORIG_END] -->
  2. ] [

    ] [

    ] [

    ]] [

    ]] [

    ]] [[

    ]]] [[

    ]]]] [[

    ]]]] [[

    ]]]] [[

    ]]] [[

    ]]]] [[

    ]]]] [[

    ]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]] [[[[]]]]]] [[[[[]]]]]] [[[[[]]]]]] [[[[]]]]]] [[[[[]]]]]]] [[[[[]]]]]] [[[[]]]]

    [ORIG_END] -->

eof_iterator private member functions

  1. <
    voidincrement();
    >
  2. <
    boolequal(consteof_iterator&other)const;
    >
  3. <
    constValueType&dereference()const;
    >

PrevUpHomeNext

Статья Class template eof_iterator раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

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