Как я могу сделать свой собственный ленивый итератор?

Я делаю класс C ++ 11, который производит огромное количество данных. Эти данные в настоящее время поступают из базы данных, и они не могут полностью поместиться в памяти. Я хотел бы предоставить пользователю итератор, который ведет себя как обычные итераторы STL, но это было бы лениво. Точнее, я бы смог сделать что-то подобное:

for (auto& item : big_bunch_of_data) {
    do_stuff_with(item);
}

С предметом, извлекаемым из базы данных только на каждой итерации. Если я прав, этот новый синтаксис является сахаром для

for (stuff::iterator it = big_bunch_of_data.begin();it != big_bunch_of_data.end();it++) {
    do_stuff_with(*it);
}

Означает ли это, что, предоставляяbegin, end а такжеoperator++Я мог иметь желаемое поведение? И что эти методы должны делать? Я имею в виду, я могу сделать их ленивыми, не ломая вещи?

Ответы на вопрос(1)

Ваш ответ на вопрос