Стандартная идиома: выставить типы iterator
и const_iterator
и предоставить как минимум две функции, а именно begin()
и end()
как:
template</*.....*/>
class Collection
{
public:
typedef /*...*/ iterator;
typedef /*...*/ const_iterator;
iterator begin();
iterator end();
const_iterator begin() const;
const_iterator end() const;
};
Как только вы реализуете их, ваша коллекция может использоваться в std::for_each
и во многих других алгоритмических функциях, определенных в <algorithm>
.