Как лучше всего заполнить boost::multi_array из списка инициализаторов? ⇐ C++
-
Гость
Как лучше всего заполнить boost::multi_array из списка инициализаторов?
Я хотел бы инициализировать boost::multi_array встроенным в какой-нибудь код. Но я не думаю, что boost::multi_array поддерживает инициализацию из списка инициализаторов. Вот что у меня есть на данный момент:
// Сначала создаем примитивный массив, который можно инициализировать напрямую uint8_t field_primitive[4][8] = { { 1,1,1,1,1,1,1,1 }, { 1,2,1,2,1,2,1,2 }, { 1,1,2,2,2,2,2,2 }, { 1,2,2,2,2,2,2,2 } }; // Создаем boost::multi_array, который я действительно хочу использовать поле boost::multi_array (boost::extents[4][8]); // Компактный, но неприятный подход к копированию содержимого примитивного массива в multi_array. memcpy(field.data(), field_primitive, field.num_elements() * sizeof(uint8_t)); Мне нравится, что я могу компактно выразить содержимое матрицы, используя список инициализаторов фигурных скобок. Но мне не нравится «memcpy», и мне не нравится использование одноразового примитивного массива. Есть ли более удобный способ заполнить мой boost::multi_array из читаемого встроенного набора значений в коде?
Я хотел бы инициализировать boost::multi_array встроенным в какой-нибудь код. Но я не думаю, что boost::multi_array поддерживает инициализацию из списка инициализаторов. Вот что у меня есть на данный момент:
// Сначала создаем примитивный массив, который можно инициализировать напрямую uint8_t field_primitive[4][8] = { { 1,1,1,1,1,1,1,1 }, { 1,2,1,2,1,2,1,2 }, { 1,1,2,2,2,2,2,2 }, { 1,2,2,2,2,2,2,2 } }; // Создаем boost::multi_array, который я действительно хочу использовать поле boost::multi_array (boost::extents[4][8]); // Компактный, но неприятный подход к копированию содержимого примитивного массива в multi_array. memcpy(field.data(), field_primitive, field.num_elements() * sizeof(uint8_t)); Мне нравится, что я могу компактно выразить содержимое матрицы, используя список инициализаторов фигурных скобок. Но мне не нравится «memcpy», и мне не нравится использование одноразового примитивного массива. Есть ли более удобный способ заполнить мой boost::multi_array из читаемого встроенного набора значений в коде?
Мобильная версия