Каков наиболее эффективный (время, память) способ добавить выровненные по 2D-горизонтали и 2D-по вертикали boost :: multi_array, в результате чего получится 3D-массив? - PullRequest
0 голосов
/ 29 мая 2020

Я хочу добавить два мульти-массива Boost в C ++.

  1. Первая проблема - это выравнивание двух массивов. Один из этих массивов выровнен по вертикали, а другой - по горизонтали, как показано на рисунке ниже. Они должны быть добавлены, в результате чего получится трехмерный массив (см. Также ниже). Самый простой / самый ленивый способ - продублировать вертикально выровненный массив вдоль его оси Y до тех пор, пока он не будет иметь ту же ширину, что и горизонтально выровненный массив. Дополнительно дублируйте горизонтально выровненный массив вдоль его оси x до тех пор, пока он не станет той же высоты, что и вертикально выровненный массив. Тогда мне понадобится возможность добавить два трехмерных мульти-массива с усилением.
  2. Вторая проблема заключается в том, что добавление мульти-массивов boost изначально не поддерживается boost, или я ошибаюсь в этом вопросе? Я хочу избежать циклов for и воспользоваться преимуществами прямой выделенной памяти, что делает, например, операции копирования менее затратными по времени.

Есть ли у кого-нибудь хорошие рекомендации для выполнения этого квеста?

vertically aligned and horizontally aligned arrays resulting cube

1 Ответ

0 голосов
/ 02 июня 2020

После долгих размышлений я думаю, что лучшим решением будет расширить один из этих 2-мерных массивов до 3-х мерного массива. Затем я могу суммировать 2D-матрицу по слайду с 3D-матрицей.

...