У меня есть массив, содержащий элементы, и массив, содержащий диапазоны,
struct range
{
uint32_t head;
uint32_t tail;
};
head
и tail
- это начальный и конечный индексы, каждый head
выровнен на 64 байта.
0 64 128 192 256 320 384 448 512 ...
items: |--------| |----------------| |---------| ...
ranges: head tail head tail head tail ...
Как я могу перебирать элементы, ограниченные диапазоном без двойного для l oop, например,
for (uint32_t i = 0; i < range_count; i++)
{
for(uint32_t j = ranges[i].head; j < ranges[i].tail; j++)
{
... items[j];
...
}
}
, просто используя single для l oop?