使用STL向量创建矩阵

iva*_*ian 1 c++ stl vector matrix

我想用"vector"创建一个矩阵:

vector < vector <int> > Mat;
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行此代码时:

int i ,j;
    for(i = 1  ; i <= 5 ; ++i)
    for(j = 1 ; j <= 5 ; ++j)
        Mat[i][j] = 0;
Run Code Online (Sandbox Code Playgroud)

我会得到一个非常讨厌的错误.我该如何解决这个问题?

我不想这样读取矩阵:

for(i = 1  ; i <= 5 ; ++i)
    for(j = 1 ; j <= 5 ; ++j)
        M[i].push_back(0);
Run Code Online (Sandbox Code Playgroud)

Isu*_*uka 6

当您以这种方式创建向量时,它们的维度为0.您必须使用良好的大小初始化它们:

vector < vector <int> > Mat(6, std::vector<int>(6));
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在第二个向量初始化中添加0将确保它将填充0:

vector < vector <int> > Mat(6, std::vector<int>(6, 0));
Run Code Online (Sandbox Code Playgroud)