Jak mogłem stworzyć własny leniwy iterator?

Tworzę klasę C ++ 11, która generuje ogromną ilość danych. Dane te pochodzą obecnie z bazy danych i nie mogą całkowicie zmieścić się w pamięci. Chciałbym udostępnić użytkownikowi iterator, który zachowuje się jak zwykłe iteratory STL, ale byłoby to leniwe. Dokładniej, mógłbym zrobić coś takiego:

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

Przy pobieraniu elementu z bazy danych tylko przy każdej iteracji. Jeśli mam rację, ta nowa składnia to cukier

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

Czy to oznacza, że ​​zapewniającbegin, end ioperator++, Mógłbym mieć pożądane zachowanie? I jakie mają być te metody? Mam na myśli, czy mogę sprawić, że będą leniwi, nie przerywając?

questionAnswers(1)

yourAnswerToTheQuestion