Добрый день
Жил-был незатейливый вектор, но вот в один прекрасный день оказалось что разные эл-ты должны обрабатываться по разному. Поэтому добавилось такое
C++ (Qt)
std::vector<CData> data; // сами данные
typedef std::pair<int, int> TPair;
typedef std::vector<TPair> TPairVec;
typedef std::vector<TPairVec> TVec;
TVec dataRange;
Пример
dataRange[0] = { { 0, 1}, {10, 15}, { 98, 100 } }
Эл-ты с индексами (0, 10, 11, 12, 13, 14, 98, 99) входят в первый набор, др элементы в другие, пересечений этих множеств нет.
И вот хочется сделать элегантный итератор (или что-то в этом роде) чтобы удобно пробегаться по заданному набору. При этом учитывая что возможен вариант dataRange.size() == 0, т.е. никаких наборов/разбивки вообще нет, используется просто data (хоть for'ом). То же самое если разбивка есть, но по каким-то причинам игнорируется.
Прошу блеснуть техникой
Спасибо