C++ 可变大小多维数组
我的可变大小多维数组代码有什么问题。如何解决这个问题。 我的代码并没有通过所有测试用例。有人能帮我修复它吗?这是来自hackerrank challenge的问题C++ 可变大小多维数组,c++,arrays,multidimensional-array,C++,Arrays,Multidimensional Array,我的可变大小多维数组代码有什么问题。如何解决这个问题。 我的代码并没有通过所有测试用例。有人能帮我修复它吗?这是来自hackerrank challenge的问题 #include<bits/stdc++.h> using namespace std; int main() { int n,q; cin>>n; cin>>q; int *arr[n]; for(int i=0;i<n;i++) {
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,q;
cin>>n;
cin>>q;
int *arr[n];
for(int i=0;i<n;i++)
{
int x;
cin>>x;
int b[x];
for(int j=0;j<x;j++)
{
cin>>b[j];
}
arr[i]=b;
}
while(q--)
{
int i,e;
cin>>i>>e;
cout<<arr[i][e]<<endl;
}
return 0;
}
#包括
使用名称空间std;
int main()
{
int n,q;
cin>>n;
cin>>q;
int*arr[n];
对于(int i=0;i>x;
int b[x];
对于(int j=0;j>b[j];
}
arr[i]=b;
}
而(q--)
{
int i,e;
cin>>i>>e;
cout这是正确的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,q;
cin>>n;
cin>>q;
int *arr[n]; // passed all test cases
for(int i=0;i<n;i++)
{
int x;
cin>>x;
int *b=new int[x];
for(int j=0;j<x;j++)
{
cin>>b[j];
}
arr[i]=b;
}
while(q--)
{
int i,e;
cin>>i>>e;
cout<<arr[i][e]<<endl;
}
return 0;
}
#包括
使用名称空间std;
int main()
{
int n,q;
cin>>n;
cin>>q;
int*arr[n];//通过了所有测试用例
对于(int i=0;i>x;
int*b=新的int[x];
对于(int j=0;j>b[j];
}
arr[i]=b;
}
而(q--)
{
int i,e;
cin>>i>>e;
Ctoto开始时,C++没有。“这是我的代码的问题”,这完全取决于它应该做什么。如果你谈论标准C++ VLAS,并且是错误的。你将指针存储到生命周期结束时访问的对象,所以访问有未定义的行为。使用<代码> STD::向量< /代码>。继续:<代码> ARR[i]=b;
makesarr[i]
指向局部数组b
,这是一个数组,在循环的每次迭代中都会超出作用域并结束其生命周期。如果在循环后尝试取消引用该指针,甚至在循环迭代后在循环内部,都会导致未定义的行为。此外,您还存储了指向超出作用域的局部变量的指针,他说rearr[i]=b;
您不仅仍然使用非标准和非便携功能,而且现在还存在一些内存泄漏。