我正在VS2010控制檯應用程序中使用2D數組。我分配陣列例如:分配一個多維數組VSC++
Thing::Thing(int _n, bool _control){
m = _n;
control = _control;
thisArray = new int*[m];
for(int ii = 0; ii < m; ii++){
thisArray[ii] = new int[m];
for (int jj = 0; jj < m; jj++){
thisArray[ii][jj] = 0;
}
}
if (control == true){
int num = 1;
for (int jj = 0; jj < m; jj++){
for (int ii = 0; ii<m; ii++){
if ((jj == (m-1)) && (ii == (m-1))){
std::cout << "inserting " << 0 <<
"at[" << ii << "][" << jj << "]" << std::endl;
thisArray[ii][jj] = 0;
std::cout << thisArray[ii][jj] << std::endl;
} else{
std::cout << "inserting " << num <<
"at[" << ii << "][" << jj << "]" << std::endl;
thisArray[ii][jj] = num++;
std::cout << thisArray[ii][jj] << std::endl;
}
}
}
pi.x = m-1;
pi.y = m-1;
}
}
然後我試圖通過
void Thing::display(){
int x = 0;
int y = 0;
for(; y < m; y++){
for(x = 0; x < m; x++){
if (Point(x, y) == pi){
std::cout << "[ ]";
}
std::cout << "[" << thisArray[x][y] << "]";
if (x == m){
std::cout << std::endl;
}
}
}
}
顯示它,但它似乎是它僅顯示第一尺寸作爲輸出時我通過在4和真看起來是這樣的:
inserting 1 at[0][0]1
inserting 2 at[1][0]2
inserting 3 at[2][0]3
inserting 4 at[3][0]4
inserting 5 at[0][1]5
inserting 6 at[1][1]6
inserting 7 at[2][1]7
inserting 8 at[3][1]8
inserting 9 at[0][2]9
inserting 10 at[1][2]10
inserting 11 at[2][2]11
inserting 12 at[3][2]12
inserting 13 at[0][3]13
inserting 14 at[1][3]14
inserting 15 at[2][3]15
inserting 0 at[3][3] 0
[1][2][3][4]
,當我的陣列添加到我的收藏系統顯示指針指向一個單一的值,然後將只顯示我的第一個元素,而不是所有的元素秒。
它拋出沒有運行時訪問錯誤,或類似的東西,但是當我嘗試顯示數組它只做第一行。注意:我被要求使用實際的二維數組,並且不允許使用預先編寫的庫或單個謊言。
編輯:增加了額外的輸出信息。 EDIT2(解析):在顯示改變了第二個for循環是
for (x = 0; x < m; x++)
保持值時,向外部for循環確保它們爲圓形迭代復位。
想起來了。這可能是display()方法中的邏輯錯誤,但仍不知道爲什麼它只顯示手錶中的第一個元素。 – gardian06 2012-03-05 00:43:25