gpt4 book ai didi

c++ - C++ 中的二维数组文字

转载 作者:可可西里 更新时间:2023-11-01 18:09:26 25 4
gpt4 key购买 nike

我正在尝试以指向指针的形式构造一个二维数组。这不起作用:

bool** data =  {
new bool[4] {true, true, true, true},
new bool[4] {true, false, false, true},
new bool[4] {true, false, false, true},
new bool[4] {true, true, true, true}
};

这可能吗?我应该怎么做?


编辑:

看来我可能在尝试做错事。我有一个函数,它采用未知大小的 bool 二维数组以及整数宽度和高度作为参数。目前签名为:

 foo(bool** data, int width, int height)

我希望能够为数据构造文字,但我还需要此函数适用于任何大小的数组。

最佳答案

您可以有一个数组数组(有时称为多维数组):

bool data[][4] =  {
{true, true, true, true},
{true, false, false, true},
{true, false, false, true},
{true, true, true, true}
};

但是,它不能转换为 bool**,所以如果您需要这种转换,那么这将不起作用。

或者,指向静态数组的指针数组( 可转换为 bool**):

bool data0 = {true, true, true, true};
bool data1 = {true, false, false, true};
bool data2 = {true, false, false, true};
bool data3 = {true, true, true, true};
bool * data[] = {data0, data1, data2, data3};

或者如果你真的想要动态数组(这几乎肯定是个坏主意):

bool * make_array(bool a, bool b, bool c, bool d) {
bool * array = new bool[4];
array[0] = a;
array[1] = b;
array[2] = c;
array[3] = d;
return array;
}

bool * data[] = {
make_array(true, true, true, true),
make_array(true, false, false, true),
make_array(true, false, false, true),
make_array(true, true, true, true)
};

或者,也许您可​​以坚持使用数组,并修改您的函数以获取对数组而不是指针的引用,如果您需要支持不同的维度,则将维度推断为模板参数。这只有在编译时始终已知维度的情况下才有可能。

template <size_t N, size_t M>
void do_something(bool (&array)[N][M]);

do_something(data);

关于c++ - C++ 中的二维数组文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210772/

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