Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 1 / lab_1 / ExternalGraphIterator
.h// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_EXTERNALGRAPHITERATOR_474088CA0242_INCLUDED
#define _INC_EXTERNALGRAPHITERATOR_474088CA0242_INCLUDED
//////////////////////////////////////////////////////////////////////////
#include "Graph.h"
#include "Iterator.h"
#include "Ribble.h"
//////////////////////////////////////////////////////////////////////////
template<class T> class Graph;
//////////////////////////////////////////////////////////////////////////
//внешний итератор
template<class T>
class ExternalGraphIterator : public Iterator<T>
{
public:
virtual Ribble<T>* first()
{
return _iterator->first();
}
virtual Ribble<T>* next()
{
return _iterator->next();
}
ExternalGraphIterator(const Graph<T>* graph)
{
attach(graph);
cout<<"[ExternalGraphIterator] external iterator created\n";
}
virtual bool hasNext()
{
return _iterator->hasNext();
}
//присоединить итератор к графу
void attach(const Graph<T>* graph)
{
_graph = graph;
_iterator = _graph->getIterator();
}
private:
//указатель на обходимый граф
const Graph<T>* _graph;
//указатель на используемый итератор
Iterator<T>* _iterator;
};
//////////////////////////////////////////////////////////////////////////
#endif /* _INC_EXTERNALGRAPHITERATOR_474088CA0242_INCLUDED */
Соседние файлы в папке lab_1