C ++中的多维数组

时间:2014-05-03 18:30:22

标签: c++ arrays

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,因为我不知道维度的数量。

2 个答案:

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