Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lect17

.pdf
Скачиваний:
6
Добавлен:
06.02.2016
Размер:
532.47 Кб
Скачать

Примеритераторадля ассоциативногомассива

class assoc_iterator {

const assoc* cs;

// массив assoc

int i;

// текущий индекс

public:

 

assoc_iterator(const assoc& s) { cs = &s; i = 0; } assoc::pair* operator()() {

return (i<cs->free)? &cs->vec[i++] : 0;

}

};

Пример использования. assoc vec(512);

...

assoc_iterator next(vec); assoc::pair* p;

while ( p = next() ) {

cout << p->name << ": " << p->val << '\n';

}

21

Примеритераторадля связанногосписка

class LinkedListIterator;

class LinkedListImpl { private:

ListElement * head; ListElement * tail; int count;

protected:

public:void FreeMem(); LinkedListImpl();

LinkedListImpl(const LinkedListImpl &src); void Clear();

void AddElement(ListElement * element);

void InsertElement(ListElement * element, int pos); void RemoveElement(int pos);

LinkedListIterator begin();

LinkedListIterator end();

};

int GetCount() const { return count; } friend class LinkedListIterator;

22

Примеритераторадля

односвязногосписка

class LinkedListIterator { private:

ListElement *curr; int pos;

public:

LinkedListIterator(LinkedListImpl * list); LinkedListIterator& operator++(int); ListElement& operator*();

bool operator == (const LinkedListIterator& i); bool operator != (const LinkedListIterator& i); int GetPos() const { return pos; }

};

Использование:

for (LinkedListIterator it=list.begin(); it!=list.end(); it++) cout << *it;

23

Спасибозавнимание!

24

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]