如何在 C++ 中实现这个结果?指向数组的数组

Posted

技术标签:

【中文标题】如何在 C++ 中实现这个结果?指向数组的数组【英文标题】:How can I achieve this result in c++? Arrays pointing to arrays 【发布时间】:2015-02-08 10:14:31 【问题描述】:

我正在尝试使用 c/c++ 执行以下操作。 为了解释代码应该如何工作,我编写了这个示例 python 代码。

A=[1,2]
B=[3,4]
C=[5,6]

X=[A,B,C]

print(X[2][1]) ##this should print the second element of the third array (6)

当我在 python 中创建一个先前创建的列表时,就像定义一个二维数组(显然不可能通过名称调用每个子数组)。

在 c/c++ 中我无法做到这一点。我在网上看到,当我指向一个数组时,我总是会得到第一个元素,是真的吗?

我可以在 C++ 中创建一个二维数组,但我需要先定义每个数组(A、B、C),然后在大数组 X 中列出所有这些数组。 我怎样才能完成这项任务?

【问题讨论】:

那么 pythin 代码是否可以在 C++ 中执行您想要执行的操作?我很困惑,有一段你谈到不先制作子阵列。 python代码先生成子数组。 python 代码完全符合我的要求。对不起,我是意大利人,解释我的想法对我来说并不容易。 【参考方案1】:

这里:

int A[]=1,2;
int B[]=3,4;
int C[]=5,6;
int* X[]=A,B,C;
printf("%d\n",X[2][1]);

【讨论】:

【参考方案2】:

您也可以使用std::vector 来完成这项工作。

int A[]=1,2;
int B[]=3,4;
int C[]=5,6;
std::vector<int> a(A,A+1);
std::vector<int> b(B,B+1);
std::vector<int> c(C,C+1);
std::vector<std::vector<int> > x;
x.push_back(a); x.push_back(b); x.push_back(c);
printf("%d\n",x[2][1]);

【讨论】:

感谢您的回答,但我使用的是 Arduino,因此此操作在此平台上不可用(我认为)。而且我也是c ++的新手,我一直使用python这种解决方案对我来说并不那么容易理解,但是我会保留你的答案,当我学习更好的c ++时我会研究它。非常感谢。

以上是关于如何在 C++ 中实现这个结果?指向数组的数组的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中实现增量数组

如何使用 ctypes 将数组从 C++ 函数返回到 Python

在 C++ 中实现归并排序

关于如何定义一个未知大小的数组

如何在 C++ 中动态分配数组

用更少的内存在 C++ 中实现二维数组