二维数组是否需要定义为指针? 我正在通过C++ HKEARKANK模块工作,我遇到了一个问题,要求输出二维数组中的某些值。问题是:
考虑一个n元素数组,二维数组是否需要定义为指针? 我正在通过C++ HKEARKANK模块工作,我遇到了一个问题,要求输出二维数组中的某些值。问题是:,c++,arrays,pointers,dynamic,reference,C++,Arrays,Pointers,Dynamic,Reference,考虑一个n元素数组,a,其中数组中的每个索引i都包含对k整数数组的引用(其中k的值因数组而异)。。。 给定a,您必须回答q查询。每个查询的格式为i j,其中i表示数组a中的索引,j表示数组中位于a[i]的索引。对于每个查询,在数组中的位置a[i]的新行上查找并打印元素j的值 我不想让整个问题成为一个引语,所以这里是链接:。基本上,第一个输入行包含上述n和q。然后有n行整数,每行输入的第一个整数是k,这是输入行k本身之后的整数数。在这些n行之后是一行,带有两个整数i和j,分别表示数组索引和元素索引
a
,其中数组中的每个索引i
都包含对k
整数数组的引用(其中k
的值因数组而异)。。。
给定a
,您必须回答q
查询。每个查询的格式为i j
,其中i
表示数组a中的索引,j
表示数组中位于a[i]
的索引。对于每个查询,在数组中的位置a[i]
的新行上查找并打印元素j
的值
我不想让整个问题成为一个引语,所以这里是链接:。基本上,第一个输入行包含上述n
和q
。然后有n
行整数,每行输入的第一个整数是k
,这是输入行k
本身之后的整数数。在这些n
行之后是一行,带有两个整数i
和j
,分别表示数组索引和元素索引
因此,解决方案是创建一个二维数组,可以用n
子数组填充。这是我最初的代码:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, q;
cin >> n >> q;
int a[n];
for(int i=0; i<n; i++){
int k;
cin >> k;
int subA[k];
for(int j=0; j<k; j++)
cin >> subA[j];
arr[i] = subA[k];
}
for (int x=0; x<q; x++){
int i, j;
cin >> i>> j;
cout << a[i][j] << endl;
}
return 0;
}
#包括
#包括
#包括
#包括
#包含问题,它只是漫不经心地跳过了一个事实,即创建二维数组似乎需要指针。
那么,当创建二维数组时,是否需要使用指针?如果是这样的话,我说需要指针是对的,因为它们不是像int
或char
那样的类型,而是只包含一个不需要知道其类型的地址吗
另外,我知道我提供的第一个链接本身就提供了一个关于向量的链接。它没有给出任何例子,我也不知道它们是什么,谷歌搜索和堆栈溢出并没有真正的帮助(特别是I/o部分),所以我只是使用了一些我熟悉的东西,而且通过谷歌搜索和堆栈溢出的过程,似乎我上面提出的高级解决方案不需要向量 请自上而下处理错误消息。在此之前应该有一个关于未声明的arr
。在C++中。根本不要使用原始数组。改用std::vector
。我也建议你向一个优秀的老师学习。C++是不可原谅的,学习非结构化的。“数组中的每个索引i包含对一个k整数数组的引用”:这种赋值方式是措辞的,它似乎假设你使用原始数组(在现代C++中不应该使用),而且在C++中引用数组是不可能的,所以在技术上没有意义。您不应该继续使用此作业的来源来学习C++。
invalid types 'int[int]' for array subscript
cout << a[i][j] << endl;