【发布时间】:2016-07-06 23:54:09
【问题描述】:
这行得通,我知道。
int8_t intArray7[][2] = {-2, -1,
0, 1,
2, 3,
4, 5,
6, 7};
int8_t intArray8[][2] = {10, 9,
8, 7,
6, 5,
4, 3,
2, 1,
0, -1,
-2, -3};
int8_t intArray9[][2] = {100, 101,
102, 103};
int8_t (*arrayOf2DArrays[])[2] = {intArray7, intArray8, intArray9};
现在,如果二维数组的宽度不一样怎么办?我该怎么做?
例如:这不起作用,因为 intArray11 的宽度为 3:
int8_t intArray10[][2] = {-2, -1,
0, 1,
2, 3,
4, 5,
6, 7};
int8_t intArray11[][3] = {10, 9, 8,
7, 6, 5,
4, 3, 2,
1, 0, -1};
int8_t intArray12[][2] = {100, 101,
102, 103};
int8_t (*arrayOf2DArrays2[])[] = {intArray10, intArray11, intArray12};
如何制作一个由不同元素大小的数组组成的数组?
我计划使用单独的变量来跟踪每个数组的大小。
【问题讨论】:
-
检查哪个数组最大,然后操作其余的添加 0 以使行匹配,然后将它们加在一起。
-
我敢打赌你需要更多的牙套。从我身边得到一些
{{ x, y }, { z, 43 }}。好吧,说真的:使用std::vector<std::vector<int8_t>>。 -
What must one do to make an array of arrays of different element sizes?in C++ .. 你可以使用STL container -
@GabrielStaples 如果你想有一定的大小并在堆栈上分配你可以考虑使用
std::array<>instead。 -
您最好的选择(如果我正确地阅读了上面的 cmets)是使用 int 指针数组,然后将内存宽度分配给每个索引指针以匹配需要。尽管您可能会发现自己处理内存管理可能不值得任何边际性能提升。在大多数情况下,STL 容器无疑会比您在内存管理方面做得更好。如果容器管理不符合您的喜好,您可以随时创建自定义分配器。
标签: c++ arrays pointers multidimensional-array arduino