我正在制作一个产生大量数据的 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++