是否可以声明一个由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阵列组成的自制时钟。解决方案不应该使用比需要更多的内存。这就是我不使用二维数组的原因。
答案 0 :(得分:3)
您可以使用Standard C++ For Arduino。它implements一个std::vector
有了它,你可以使用矢量矢量
struct Number
{
int x;
int y;
};
using MultiNum = std::vector<std::vector<Number>>;
然而,值得注意的是,Arduino的内存非常小,你的内存使用率确实应该上限。 vector
的{{1}} vector
没有巧妙地使用reserve
可能会浪费一些记忆......
另一种选择是:
Number x[][4] =
{
{ {0,0}, {0,1} },
{ {0,0}, {0,1}, {1,0}, {0,0} },
{ {0,0}, },
{ {0,0}, {4,0} }
};
原因是,它指示在编译时修复内存消耗。 (4 {4矩阵Number
)。
答案 1 :(得分:0)
是,Number* var[];
或Number** var;
。案件结束:)
答案 2 :(得分:0)
如果您关心的是内存,您可以随时声明Number **var
并在需要时手动分配和重新分配空间。