Скажем, у меня есть гнездо для циклы, как
for (int x = xstart; x < xend; x++){
for (int y = ystart; y < yend; y++){
for (int z = zstart; z < zend; z++){
function_doing_stuff(std::make_tuple(x, y, z));
}
}
}
и хотел бы превратить его в
MyRange range(xstart,xend,ystart,yend, zstart,zend);
for (auto point : range){
function_doing_stuff(point);
}
Как бы написать класс MyRange таким же эффективным, как вложенные для циклов? Мотивация заключается в том, чтобы иметь возможность использовать std-алгоритмы (такие как преобразование, накопление и т.д.) И создавать код, который в значительной степени агностик.
Имея итератор, было бы легко создать шаблонные функции, которые работают в диапазоне 1d, 2d или 3-х точек.
В настоящее время база кода С++ 14.
РЕДАКТИРОВАТЬ:
Написание четких вопросов сложно. Я попробую уточнить. Моя проблема заключается не в написании итератора, который я могу сделать. Вместо этого проблема заключается в производительности: возможно ли сделать итератор так же быстро, как вложенные для циклов?