我对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';
}
答案 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的绝对值
你还确定当你使用索引值时,它们不会超出你声明的数组范围。