簡體   English   中英

C ++ 3D數組

[英]c++ 3d arrays

我正在嘗試運行3d數組,但是當我運行它時,代碼只會在Windows中崩潰,這是我的代碼;

#include <iostream>

using namespace std;

int main(){

    int myArray[10][10][10];

    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){            
            for (int x = 0; x <= 9; ++t){

                myArray[i][t][x] = i+t+x; 

            }

        }

     }


    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){
            for (int x = 0; x <= 9; ++t){

                cout << myArray[i][t][x] << endl;

            }

        }

    }

    system("pause");

}

有人可以給我快速解決/解釋嗎

你兩次排隊

for (int x = 0; x <= 9; ++t){

當你的意思

for (int x = 0; x <= 9; ++x){

經典復制和粘貼錯誤。

順便說一句,如果您在調試器中運行此程序並查看變量的值,則很容易看到發生了什么。

大衛的答案是正確的。

順便說一句,約定是將i,j和k用於嵌套的迭代器索引,並且還使用<array_length而不是<= array_length -1作為終止符。

如果這樣做,則可以使數組大小為常數,並擺脫一些魔術數字。

同樣,在使用數組索引時的斷言可能使您指出了錯誤。

結果可能如下所示:

const std::size_t ARRAY_SIZE = 10;

int myArray[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];

for (std::size_t i = 0; i < ARRAY_SIZE; ++i) 
{
    for (std::size_t j = 0; j < ARRAY_SIZE; ++j)
    {
        for (std::size_t k = 0; k < ARRAY_SIZE; ++k)
        {
            std::assert (i < ARRAY_SIZE && j < ARRAY_SIZE && k < ARRAY_SIZE);
            // Do stuff
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM