在Boost multi_array

时间:2017-08-18 18:52:36

标签: c++ arrays boost permutation

我正在使用Boost multi_array library编写C ++程序。我有一个4维数组,例如[5][10][100][20]的形状。我想将数组的形状更改为[100][10][5][20]。这样做的正确方法是什么?

谢谢

1 个答案:

答案 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);

Live on Wandbox

至于维度排列,据我所知#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 } 没有任何功能,所以你需要自己编写。