Можно ли использовать приведение как «нарезку массива» в C++11?C++

Программы на C++. Форум разработчиков
Anonymous
Можно ли использовать приведение как «нарезку массива» в C++11?

Сообщение Anonymous »

У меня есть некоторая общая память, заполненная специализированным оборудованием. Он объявлен как массив структур, например:

Код: Выделить всё

struct port {
int data[10];
char port_id[8];
}

struct bus {
port ports[5];
char bus_id[8];
}

struct bus busses[10];
Я (пере) изучаю C++ и хотел использовать циклы for в C++11 для перебора данных.
ОДНАКО: Это последнее измерение массива (

Код: Выделить всё

data[10]
), меня интересуют только первые четыре элемента. Есть ли способ взять фрагмент данных и использовать его в операторе for()?
Нравится

Код: Выделить всё

for (auto & b : busses) {
for (auto & p : bus.ports) {
for (auto & d : port.data[0 through 3]) {
store_the_address_of_d_for_use_elsewhere(d);
}
}
}
Есть ли способ использовать приведение во внутреннем цикле for, чтобы казалось, что в нем всего 4 элемента? Адрес данных важен, поскольку позже я собираюсь напрямую ссылаться на него с помощью указателей.

Подробнее здесь: https://stackoverflow.com/questions/404 ... ing-in-c11

Вернуться в «C++»