[英]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.