我需要创建一个 n 元素数组 a,其中每个索引 i 都引用另一个 K 整数数组
I need to create an n-element array a where each index i has a reference to another array of K integers
K的值因数组而异。如何做到这一点?
这就是我必须要达到的目标。它是 hackerrank 可变 sizedarray 问题。
https://s3.amazonaws.com/hr-challenge-images/14507/1476906485-2c93045320-variable-length-arrays.png
我已阅读解决方案,但无法理解。
请解释这行代码:int** seq=new int* [n];
以下是截取该片段的完整代码。
int main()
{
int n,q;
cin>>n>>q;
int** seq=new int* [n];
for(int i=0;i<n;i++)
{
int a;
cin>>a;
int* b=new int [a];
for(int j=0;j<a;j++)
{
int e;
cin>>e;
b[j]=e;
}
*(seq+i)=b;
}
for(int i=0;i<q;i++)
{
int r,s;
cin>>r>>s;
cout<<seq[r][s]<<endl;
}
}
我还阅读了一些有关使用向量创建可变大小数组的内容。我不明白。请解释。
如果你写 int *p,这意味着你正在定义一个指针,它将存储一个整数的地址。
同理,int **p表示指向整型指针的指针。
现在,假设您创建一个这样的一维数组:
int *a = new int[10];
这里的指针"a"指向刚刚创建的数组"new"的第一个整数的地址。
要访问单个元素,您可以使用 a[i] 或简单地使用 *(a+i)。
现在开始回答你的问题。
int **seq = new int*[n];
此处的 "new" 将创建一个 "pointers" 的数组。所以要指向第一个元素,也就是这里的指针,就需要使用指向指针的指针。这就是为什么 **seq.
K的值因数组而异。如何做到这一点?
这就是我必须要达到的目标。它是 hackerrank 可变 sizedarray 问题。 https://s3.amazonaws.com/hr-challenge-images/14507/1476906485-2c93045320-variable-length-arrays.png
我已阅读解决方案,但无法理解。 请解释这行代码:int** seq=new int* [n];
以下是截取该片段的完整代码。
int main()
{
int n,q;
cin>>n>>q;
int** seq=new int* [n];
for(int i=0;i<n;i++)
{
int a;
cin>>a;
int* b=new int [a];
for(int j=0;j<a;j++)
{
int e;
cin>>e;
b[j]=e;
}
*(seq+i)=b;
}
for(int i=0;i<q;i++)
{
int r,s;
cin>>r>>s;
cout<<seq[r][s]<<endl;
}
}
我还阅读了一些有关使用向量创建可变大小数组的内容。我不明白。请解释。
如果你写 int *p,这意味着你正在定义一个指针,它将存储一个整数的地址。
同理,int **p表示指向整型指针的指针。
现在,假设您创建一个这样的一维数组:
int *a = new int[10];
这里的指针"a"指向刚刚创建的数组"new"的第一个整数的地址。
要访问单个元素,您可以使用 a[i] 或简单地使用 *(a+i)。
现在开始回答你的问题。
int **seq = new int*[n];
此处的 "new" 将创建一个 "pointers" 的数组。所以要指向第一个元素,也就是这里的指针,就需要使用指向指针的指针。这就是为什么 **seq.