У вас может быть следующий простой эквивалент Java Iterable
интерфейса:
template <typename T, typename U>
struct iterable {
T _begin;
U _end;
iterable(T begin, U end)
: _begin(begin),
_end(end)
{}
T begin() {
return _begin;
}
U end() {
return _end;
}
};
Если вам интересно, почему существуют T
и U
, когда начальный и конечный итератор должен быть то же. Причина в том, что некоторые контейнеры не имеют этих двух итераторов одного типа.
Кроме того, вы можете реализовать вспомогательную функцию make_iterable
, например:
template <typename T, typename U>
iterable<T, U> make_iterable(T t, U u) {
return iterable<T,U>(t, u);
}