в предыдущей главе). Каждый а
Автор admin Суббота, 6 июня 2009 11:32
в предыдущей главе). Каждый алгоритм предъявляет определенные требования к своим итераторам. Информация о категории итератора играет еще более важную роль при создании пользовательских шаблонов алгоритмов, поскольку категория итератора, обязательная для вашего алгоритма, определяет его универсальность. Если алгоритм обходится самой примитивной категорией итераторов (ввода или вывода), он будет работать с любыми итераторами (примером может служить алгоритм сору()). Категория итератора определяется иерархией специальных классов — итера-торных тегов. Имена классов соответствуют категориям итераторов, а иерархия наследования отражает логические связи между ними: // Итератор ввода struct input_iterator_tag {}: // Итератор вывода struct output_iterator_tag {}; // Прямой итератор struct forward_iterator_tag: public input_iterator_tag {}; // Двусторонний итератор struct bidirectional_iterator_tag : public forward_iterator_tag {}: // Итератор произвольного доступа struct random_access_iterator_tag : public bidirectional_iterator_tag {}; Класс forward_iterator_tag наследует только от input_iterator_tag, но не от
Комментарии закрыты.
Последние комментарии