【发布时间】:2026-01-27 01:50:01
【问题描述】:
是否可以声明一个由其他数组(大小可变)组成的数组,该数组由 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 阵列组成。该解决方案不应使用比所需更多的内存。这就是我不使用二维数组的原因。
【问题讨论】:
-
如果你不能使用
std::vector<std::vector<Number>>,你可能需要为它提供自己的实现。 -
那么你想要 C 还是 C++?你的问题是矛盾的。一方面,您要求 C/C++ 解决方案,并且您的问题有 c++ 标签,另一方面,您声明您正在使用 gcc 编译器。
-
您的问题的答案是否定的,您要求的内容在
C++ Standard Library中。也许您可以找到另一个实现类似于std::vector的库。 -
我重写了混淆线,我真的很想学习 C++,所以这就是我使用 C++ 的原因。我正在尝试这样的解决方案:
Number N0[] = { {0,0}, {1,1}, {2,2}, {4,4} }; Number N1[] = { {6,0}, {1,3}, {1,2} }; Number N2[] = { {7,0}, {1,2}, {0,2}, {4,8}, {6,6} }; Number *Numbers[] = { N0, N1, N2 };但是我不知道如何遍历 Numbers[0]; 的元素;所以 Numbers[0][0]->x 给我 0,0 而 Numbers[0][1]-x 给我 1。