62 lines
1.1 KiB
C++
62 lines
1.1 KiB
C++
#include <string>
|
|
#include <vector>
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
class Iterator
|
|
{
|
|
public:
|
|
Iterator(){}
|
|
virtual ~Iterator(){}
|
|
virtual bool hasNext() = 0;
|
|
virtual string next() = 0;
|
|
};
|
|
|
|
class NameIterator: public Iterator
|
|
{
|
|
public:
|
|
NameIterator(size_t index, std::vector<string> vector) : index(index), vector(vector){}
|
|
bool hasNext()
|
|
{
|
|
if(index < vector.size() - 1)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
string next()
|
|
{
|
|
if(this->hasNext())
|
|
{
|
|
return vector.at(index++);
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
private:
|
|
size_t index;
|
|
std::vector<string> vector;
|
|
};
|
|
|
|
class Container
|
|
{
|
|
public:
|
|
Container(){}
|
|
virtual ~Container(){}
|
|
virtual Iterator* getIterator() = 0;
|
|
};
|
|
|
|
class NameRepository: public Container
|
|
{
|
|
public:
|
|
NameRepository(size_t index, std::vector<string> vector) : index(index), vector(vector){}
|
|
Iterator* getIterator()
|
|
{
|
|
return new NameIterator(index, vector);
|
|
}
|
|
|
|
private:
|
|
size_t index;
|
|
std::vector<string> vector;
|
|
};
|