为什么我的c ++程序崩溃了?

Ara*_*hya 0 c++

#include <iostream>
#include <vector>
using namespace std;
int m,n;
vector<vector<int> > name(m,vector<int>(n));
int main()
{
    cin>>m>>n;
    for ( int i=0;i<m;i++)
    {
        for( int j=0;j<n;j++)
            cin>>name[i][j];
    }
}
Run Code Online (Sandbox Code Playgroud)

每次我给的输入mn,崩溃!我想要做的是将输入提供给m行和n列的二维数组.

Ben*_*ley 5

你需要初始化向量(或调整其大小)后,你读出的值mn.正如你所拥有的那样,m并且n在向量初始化时为0*,因此向量的大小为0.

*这只是因为您将它们放在全球范围内.如果放在一个函数中,它们将是未初始化的,并且使用它们的值将是未定义的行为

  • @Aradhya:我还没说过吗?初始化你的向量(即创建它)*在*main`函数内从`cin`读取`m`和`n`的值之后. (2认同)

fas*_*ked 5

因为你已经跑出了界限.

name向量是全局变量,因此在程序启动的那一刻甚至在初始化,main函数.整数全局变量也在0C++ 中初始化.因此name矢量的大小为零.

阅读nm值后,您需要调整向量的大小.