C ++中是否有可用的多维数组实现,其中维度的数量是在运行时指定的?基本上,我正在寻找这样的东西:
// create a 4 dimensional array
int num_dim = 4;
int sizes[4] = {3, 2, 4, 5}; // size for each dimension
MultiArray<int> A( num_dim, sizes );
// accessing a element in the array
int index[4] = {2, 2, 1, 0};
A[index] = 3;
编辑:
请注意,我不想使用std::vector<std::vector<...>>
或boost::multi_array
,因为我不知道维度的数量。
答案 0 :(得分:0)
是的,实现存在于boost
中http://www.boost.org/doc/libs/1_55_0/libs/multi_array/doc/user.html
typedef boost::multi_array<double, 3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
答案 1 :(得分:0)
请注意,我不想使用
std::vector<std::vector<...>>
或boost::multi_array
,因为我不知道维度的数量。
使用std::vector<std::vector<...>>
最适合您的情况。
int m;
int n;
// Read the dimensions of the 2D array.
std::cin >> m >> n;
// Create a 2D array of size m x n using `std::vector`.
std::vector<std::vector<int>> array(m, std::vector<int>(n));