C++ 为什么可以';在这个场景中我不能使用push_back吗?
我认为我在代码中所做的是合法的,但它显示了运行时错误。为什么?C++ 为什么可以';在这个场景中我不能使用push_back吗?,c++,C++,我认为我在代码中所做的是合法的,但它显示了运行时错误。为什么? int main() { int q; cin>>q; while(q--) { int n, start; vector<int> adj[n]; for (int i=0;i<n;i++) { for (int j=0;j<n;j++) {
int main() {
int q;
cin>>q;
while(q--)
{
int n, start;
vector<int> adj[n];
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
int x;
cin>>x;
//if(x==1) start = i;
adj[i].push_back(x);
}
}
}
//code
return 0;
}
intmain(){
int-q;
cin>>q;
而(q--)
{
int n,开始;
向量adj[n];
对于(int i=0;ix;
//如果(x==1)开始=i;
形容词[i]。推回(x);
}
}
}
//代码
返回0;
}
运行时错误:
运行时错误中止信号从异常中止(3)(Sigabt) < P>这是因为您没有初始化<代码> N< /代码>。在声明您的向量之前,只需初始化<代码> N< /代码>。如“代码> n=10 < /COD>或<代码> CIN > N< /代码>。< /P> < P>这不是一个有效的C++代码:
vector<int> adj[n];
向量调整[n];
它可以在gcc和其他一些编译器上工作,因为它们可能对c99样式的数组进行了扩展。
如果启用编译器警告,则可以检测这些警告
@ @普拉什特在其答案中指出,代码中还存在未初始化变量
warning:“n”可在未初始化的情况下在此函数中使用[-Wmaybe uninitialized]
虽然我同意这是问题的一部分,但这并不是唯一的问题。对!我在开始工作的时候就一直这样编码。:p可能我应该更清楚一些。请参阅我在原始帖子上的评论。这将解释另一个主要问题。谢谢@Chipster。我还发现了一篇不错的文章。学习新东西很棒!@tamalamity No.这个问题将来可能会对其他人有所帮助。谢谢你指出这一点!