gpt4 book ai didi

c++ - 如何在 C++ 中创建二维数组的数组

转载 作者:搜寻专家 更新时间:2023-10-31 00:25:53 25 4
gpt4 key购买 nike

假设我有一堆 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] 并接收: block _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 函数生成初始化程序。


为了满足您的要求:

I can for example do: block_types[0] and recieve: 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++ 中创建二维数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com