C++ 2d 矢量下标超出范围错误
C++ 2d Vector subscript out of range error
目前在我的函数中,我有一个声明二维向量的方法。
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);
}
}
}
例如,当我尝试运行函数时,path(10,10)。
双精度 for 循环完美运行,没有任何错误,但是如果我更改路径,例如路径 (11,10) 或路径 (11,13) 或两者(int x 和 y)的数字,则会出现超出范围的误差向量下标。
为什么会这样?谁能帮我解决这个问题?有没有办法修复它,以便我可以接受我键入的任何值?谢谢。
mazeArray[b][a].setX(b);
在此语句中,b 可以从 [0,row-1] 变化,而 mazeArray 的维度column
* row
。因此,第一个索引只能具有 [0,列-1] 中的值。所以最有可能的是,你需要像这样初始化向量 -:
vector <vector<test>> mazeArray(row, vector<test>(column)); //Declaring an object
函数中的循环
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);
}
}
}
是错误的。您必须在索引中交换 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);
}
}
}
考虑到函数参数的含义不清楚,因为它们没有被使用:)
相关文章:
- "myClock"未在此范围错误中声明
- 包含来自另一个文件的函数会导致范围错误(openFoam)
- Visual C:命名空间范围错误或晦涩功能?
- 在遍历字符串时,为什么我没有超出范围错误,即使我已经超出了它的长度?
- 此范围错误中未声明如何修复
- 尝试声明函数的局部变量,但得到范围错误
- c ++ to_string未在此范围错误 [Windows + Devcpp 环境] 中声明
- 将文件读取到向量的向量,超出范围错误
- 向量下标出的范围错误.即使向量的索引大于访问数据的索引,也会发生误差
- Eratosthenes C 的筛子 - 内存处的范围错误
- 向量:内存处的范围错误
- 测试完美哈希函数时超出范围错误
- 为什么此代码会给出 Vector 超出范围错误
- 在填充 Arduino 草图时出现范围错误
- 如何修复C++中矢量的"下标超出范围"错误?
- CPP-模板范围错误
- 在此范围错误中未声明函数错误
- C 表达式:向量下标出范围错误线:1733
- 无法在好友函数中实例化类?我没有得到在范围错误中声明
- 带有类的嵌套结构.范围错误