Есть ли способ перебрать все элементы представления в Boost? multi_array
? Понятно, как перебрать Boost multi_array
; а именно, пройти через диапазон [array.data(), array.data() + array.num_elements())
, Но если я создам представление в этом массиве (которое вырезает некоторое подмножество массива), очевидно, что непрерывный доступ с использованием указателей будет невозможен: представление не будет соответствовать ни одному непрерывному блоку памяти. Предоставляет ли Boost механизм для решения этой проблемы или мне нужно реализовать решение вручную?
К счастью, концепция multi_array не требует какого-либо непрерывного блока памяти. Тот факт, что эталонная реализация хранит шаг для каждого измерения, дает достаточно информации для правильной итерации по представлению. Фактически, концепция multi_array требует, чтобы возвращаемое представление было итеративным, как стандартный контейнер.
Других решений пока нет …