|
Пассивные итераторы На другом фланге стоят итераторы, которые на самом деле не делают ничего существенного. В них хранится служебная информация, занесенная коллекцией, но перемещение и все остальные операции выполняются самой коллекцией. Нам понадобятся те же функции - просто из итератора они перемещаются в коллекцию, а итератор применяется только для хранения служебной информации этих функций. Базовый итератор и цикл итерации выглядят так: class Iterator; class Collection { public: Iterator* Iterate(); // Возвращает пассивный итератор bool More(Iterator*); Foo* Next(Iterator*); }; Iterator* iter = collection->Iterate(); while (collection->More(iter)) f(collection->Next(iter)); Такие итераторы называются пассивными, поскольку сами по себе они не выполняют никаких действий и предназначены лишь для хранения служебной информации. |
Copyright 2005. Климов Александр. All Right Reserved.