我正在使用Boost multi_array library编写C ++程序。我有一个4维数组,例如[5][10][100][20]
的形状。我想将数组的形状更改为[100][10][5][20]
。这样做的正确方法是什么?
谢谢
答案 0 :(得分:1)
假设您要求重新整形而不是维度的排列(这些操作不相同),那么您可以使用reshape
的{{1}}成员函数,如此(示例采用逐字逐句)来自Boost Multi-Array documentation)
boost::multi_array
以下完整示例:
typedef boost::multi_array<double, 3> array_type;
array_type::extent_gen extents;
array_type A(extents[2][3][4]);
boost::array<array_type::index, 3> dims = {{4, 3, 2}};
A.reshape(dims);
至于维度排列,据我所知#include <iostream>
#include <boost/multi_array.hpp>
int main()
{
using array_type = boost::multi_array<double, 2>;
array_type::extent_gen extents;
array_type A(extents[1][2]); // 1 x 2 array
A[0][0] = 1; A[0][1] = 2;
std::cout << A[0][0] << ' ' << A[0][1] << '\n';
boost::array<array_type::index, 2> dims = {{2,1}};
A.reshape(dims); // reshape it to 2 x 1
std::cout << A[0][0] << ' ' << A[1][0] << '\n'; // verify
}
没有任何功能,所以你需要自己编写。