结构数组的数组

Array of array of structs

本文关键字:数组 结构      更新时间:2023-10-16

是否可以声明一个由其他数组(具有可变大小)组成的数组,该数组由C++中的结构组成?如果有一种简单有效的方法(使用 for)来迭代数组元素内的所有结构,那就太好了。

结构定义如下:

struct Number
{
  int x;
  int y;
};

例如,数据如下所示:

{
    { {0,0}, {0,1} },
    { {0,0}, {0,1}, {1,0}, {0,0} },
    { {0,0}, },
    { {0,0}, {4,0} }
}

我想将其用于由Arduino Uno,以太网屏蔽,RTC和LED阵列组成的自制时钟。解决方案不应使用超过所需的内存。这就是为什么我不使用二维数组。

您可以使用

Standard C++ For Arduino。它实现了std::vector

有了它,您可以使用向量的向量

struct Number
{
  int x;
  int y;
};
using MultiNum = std::vector<std::vector<Number>>;

但是,值得注意的是,Arduino的内存确实很小,您应该确实对内存使用量有上限。vector vector而不巧妙地使用reserve可能会浪费一些内存......

另一种选择是:

Number x[][4] =
    {
    { {0,0}, {0,1} },
    { {0,0}, {0,1}, {1,0}, {0,0} },
    { {0,0}, },
    { {0,0}, {4,0} }
    };

原因,这决定了编译时消耗固定内存。(Number的 4x4 矩阵)。

是的,Number* var[];Number** var;。结案:)

编辑:哦,你换成了C++...而不是省去头疼并使用std::vector。井。。。您甚至可以在 C 中制作自己的 Vector,但不能使用模板。

如果您关心的是内存,您可以随时声明Number **var并在需要时手动分配和重新分配空间。