C ++ 2d数组索引错误

时间:2015-11-27 08:36:37

标签: c++ arrays indexing

我对2d数组索引有疑问。这里player_board被声明为char的双指针,它是一个二维数组。然后我分配内存,一切似乎工作得很好。 x_vals和y_vals是存储x坐标和y坐标的两个向量。我试图用' A'替换给定x,y值的原始值。当我打印出x_vals和y_vals的元素时,它看起来很好但是当我将它们用作索引时,它们开始随机分配。这是我的代码......我该如何解决这个问题?感谢帮助

for(unsigned int i = 0; i < x_vals.size(); i++) {
    cout << x_vals.at(i) - 48 << y_vals.at(i) - 48 << endl;
    player_board[x_vals.at(i) - 48][y_vals.at(i) - 48] = 'A';
}

2 个答案:

答案 0 :(得分:0)

我假设x_vals和y_vals被声明为int或uint的向量,因此当尝试在二维维数矩阵中的某个索引处获取单元格时,您可能会为矩阵提供负值。 例如,假设您的x_val.at(1)= 10 - &gt;然后你将尝试访问索引为-38的单元格。 如果我错了,请纠正我,并提供有关x_vals和y_vals的类型以及player_board的矩阵分配的更多信息。

答案 1 :(得分:0)

当你打印出x_vals.at(i) - 48和y_vals.at(i) - 48的值时,你没有得到一些负值吗?我认为你得到这些负值然后尝试以负索引访问数组中的值,例如player_board [-10] ...

也许您可以在索引值时尝试使用x_vals.at(i) - 48和y_vals.at(i) - 48的绝对值

你还确定当你使用索引值时,它们不会超出你声明的数组范围。