我知道如何声明一个二维数组,就像这样:
int arr[5][5];
但我希望用不同的方式来实现,就像我们声明一维数组一样:
array<int, 5> arr;
如何使用数组的第二种声明方法声明二维数组?
我知道如何声明一个二维数组,就像这样:
int arr[5][5];
但我希望用不同的方式来实现,就像我们声明一维数组一样:
array<int, 5> arr;
std::array<std::array<int, 5>, 5> arr;
很遗憾没有“短”语法,但你可以创建一个:
template <class T, std::size_t rows, std::size_t cols>
using two_dim_array = std::array<std::array<T, cols>, rows>;
two_dim_array<int, 5, 5> arr;
std::array
时,大小的顺序array<array<int, n_columns>, n_rows>
与使用a[i_row][i_column]
时的索引相反。使用您的two_dim_array
时,声明的顺序与索引的顺序相同,这很好,但不够清晰。我没有好的解决方案来提高清晰度,但我喜欢一个折衷的符号,它也有正确的顺序,但为了不固定冗长性,增加了一些声明的清晰度:array_of<n_rows, array_of<n_columns, int>>
。 - Cheers and hth. - Alfarray<array<int, 5>, 5> arr;
std::array<std::array<int, 5>, 5> arr;
如果您不确定数组的大小,最好声明一个二维向量
vector<vector<data_type>> 2dMatrix;
vector<vector<data_type>> 2dMatrix(row,vector<data_type>(column));