如何在C++中创建二维数组的数组
How to create an array of two dimensional arrays in C++
>假设我有一堆 bool[4][4]
类型的二维数组,如下所示:
class A
{
public:
static const int SIZE = 4;
static constexpr bool blocks_S[SIZE][SIZE]={ {0,1,1,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}};
static constexpr bool blocks_SR[SIZE][SIZE] = { {1,1,0,0},
{0,1,1,0},
{0,0,0,0},
{0,0,0,0}};
static constexpr bool blocks_L[SIZE][SIZE] = { {0,0,1,0},
{1,1,1,0},
{0,0,0,0},
{0,0,0,0}};
static constexpr bool blocks_LR[SIZE][SIZE] = {{1,1,1,0},
{0,0,1,0},
{0,0,0,0},
{0,0,0,0}};
static constexpr bool blocks_Box[SIZE][SIZE] = {{1,1,0,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}};
static constexpr bool blocks_Bar[SIZE][SIZE] = {{1,1,1,1},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};
};
我想制作一个名为 block_types
的数组,其中包含对所有这些二维数组的引用,因此我可以例如执行以下操作: block_types[0]
并接收: blocks_S
. 我怎样才能构造这样的数组(不使用std::vector
等(,block_types
的类型应该是什么?我尝试了auto
,它选择了错误的类型。
auto block_types = { A::blocks_S, A::blocks_SR,
A::blocks_L, A::blocks_LR,
A::blocks_Box, A::blocks_Bar};
数组
的初始值设定项必须是元素值的支撑列表 - 这是递归的。 初始值设定项不能是另一个数组。换句话说,不可能通过提供一个本身就是数组的初始值设定项来初始化数组的多个元素。
如果你需要两个具有相同内容的单独数组,你必须给它们相同的初始值设定项:例如,通过写出两次,或使用#define
宏,或者通过 constexpr 函数生成初始值设定项。
为了满足您的要求:
例如,我可以做:block_types[0]并接收:blocks_S
你不需要创建另一个数组;你可以使用一个指针数组:
using row_t = const bool[A::size];
row_t *block_types[] = { A::blocks_S, A::blocks_SR,
A::blocks_L, A::blocks_LR,
A::blocks_Box, A::blocks_Bar};
之后,block_types[0]
可以类似于A::blocks_S
使用。
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- C++ 中动态二维数组的访问冲突
- 在二维向量或数组中可以存储的最大元素数是多少?
- 遍历二维数组的所有子数组
- 如何使用智能指针在二维上声明数组?
- 如何初始化所有元素为 0 的指针的二维动态内存数组
- 如何将二维字符类型数组逐行保存到 c 中的.txt文件中
- C++ 中的二维步进数组
- 在Rcpp中分配一个大型的二维数字向量数组
- 如何动态创建一个已知二维的c++数组
- c++将静态二维双精度数组转换为双精度**