C++ C++;二维矢量下标超出范围错误

C++ C++;二维矢量下标超出范围错误,c++,arrays,object,vector,C++,Arrays,Object,Vector,目前在我的函数中,我有一个声明2d向量的方法 vector <vector<test> > path(int x, int y) //Path function { vector <vector<test>> mazeArray(column, vector<test>(row)); //Declaring an object for (int a = 0; a < column; a++) { f

目前在我的函数中,我有一个声明2d向量的方法

vector <vector<test> > path(int x, int y) //Path function
{
vector <vector<test>> mazeArray(column, vector<test>(row)); //Declaring an object
    for (int a = 0; a < column; a++)
    {
        for (int b = 0; b < row; b++)
        {
            mazeArray[b][a].setX(b);
            mazeArray[b][a].setY(a);
        }
    }
}
向量路径(intx,inty)//路径函数 { 向量mazarray(列,向量(行));//声明一个对象 对于(int a=0;a 例如,当我尝试运行函数时,path(10,10)

double for循环可以完美地工作,没有任何错误,但是如果我更改路径(例如,路径(11,10)或路径(11,13)或两者的数字(int x和y)不相同,则会出现错误矢量下标超出范围


为什么会这样?有人能帮我吗?有没有办法修复它,使我输入的任何值都可以接受?谢谢

函数中的循环

vector <vector<test> > path(int x, int y) //Path function
{
vector <vector<test>> mazeArray(column, vector<test>(row)); //Declaring an object
    for (int a = 0; a < column; a++)
    {
        for (int b = 0; b < row; b++)
        {
            mazeArray[b][a].setX(b);
            mazeArray[b][a].setY(a);
        }
    }
}
向量路径(intx,inty)//路径函数 { 向量mazarray(列,向量(行));//声明一个对象 对于(int a=0;a 这是错误的。你必须在索引中交换b和a。应该有

    for (int a = 0; a < column; a++)
    {
        for (int b = 0; b < row; b++)
        {
            mazeArray[a][b].setX(b);
            mazeArray[a][b].setY(a);
        }
    }
}
for(int a=0;a

考虑到函数参数的含义不清楚,因为它们未被使用。:)

函数中的循环

vector <vector<test> > path(int x, int y) //Path function
{
vector <vector<test>> mazeArray(column, vector<test>(row)); //Declaring an object
    for (int a = 0; a < column; a++)
    {
        for (int b = 0; b < row; b++)
        {
            mazeArray[b][a].setX(b);
            mazeArray[b][a].setY(a);
        }
    }
}
向量路径(intx,inty)//路径函数 { 向量mazarray(列,向量(行));//声明一个对象 对于(int a=0;a 这是错误的。你必须在索引中交换b和a。应该有

    for (int a = 0; a < column; a++)
    {
        for (int b = 0; b < row; b++)
        {
            mazeArray[a][b].setX(b);
            mazeArray[a][b].setY(a);
        }
    }
}
for(int a=0;a
考虑到功能参数的含义不清楚,因为它们未被使用。:)

在此语句中,b可以从[0,第1行]变化,而Mazarray的维度为
*
。因此,第一个索引只能包含[0,column-1]中的值。很可能,你需要像这样初始化向量-:

向量mazarray(行、向量(列))//声明对象

在此语句中,b可以从[0,第1行]变化,而Mazarray的维度为
*
。因此,第一个索引只能包含[0,column-1]中的值。很可能,你需要像这样初始化向量-:


向量mazarray(行、向量(列))//声明对象

您的列和行是否已切换?您好,我已尝试切换它们,但仍然会出现相同的错误。我不知道为什么,但数字必须一致,以避免向量下标超出范围的问题。有什么办法可以解决这个问题吗?你的列和行被切换了吗?嗨,我试过切换它们,但它仍然给我同样的错误。我不知道为什么,但数字必须一致,以避免向量下标超出范围的问题。有什么办法解决这个问题吗?