Адаптер итератора генератора облегчает создание пользовательских итераторов ввода из 0-арных функций и функциональных объектов. Адаптер принимаетГенератори создает модельИтератор ввода. Каждое приращение извлекает элемент из генератора и делает его доступным для извлечения путем отсчета. Мотивация этого итератора заключается в том, что некоторые концепции могут быть более естественно выражены как генератор, в то время как большинство алгоритмов STL ожидают итератора. Примером может служить библиотекаСлучайное число.
Генератор класса_iterator_generator - класс помощника, целью которого является создание итератора типа генератора. Параметром шаблона для этого класса является тип объекта функции генератора, который обертывается. Адаптер итератора генератора содержит только ссылку (или указатель) на объект функции, поэтому объект функции должен пережить адаптер итератора генератора, построенный из него.
template <class Generator>
class generator_iterator_generator
{
public:
typedef unspecified type; // the resulting generator iterator type
}
Обертывается тип генератора (0-ary function object). Тип возврата функции должен быть определен какГенератор::result_type. Объект функции должен быть модельюГенератора.
Concept Model
Класс генераторного итератора представляет собой модельInput Iterator.
Members
Итератор генератора реализует функции и операторы, требуемые концепциейИтератор ввода.
Функцияmake_generator_iterator()обеспечивает удобный способ создания объектов итератора генератора. Функция избавляет пользователя от проблемы явного написания типов итератора.