2017-11-23 7 views
-1

私がプログラミングしているゲーム用のボードをプリントアウトしようとしています。ここではそのための私のコードは次のとおりです。ループのベクトルによって引き起こされるアドレス境界エラー?

#include <iostream> 
#include <vector> 

using namespace std; 

vector<char> column1 = { '-', '-', '-', '-', '-', '-'}; 
vector<char> column2 = column1; 
vector<char> column3 = column1; 
vector<char> column4 = column1; 
vector<char> column5 = column1; 
vector<char> column6 = column1; 
vector<char> column7 = column1; 

vector<vector<char>> all_columns = { 
    column1, 
    column2, 
    column3, 
    column4, 
    column5, 
    column6, 
    column7 
}; 

void print_board() { 
    cout << "| "; 
    for (int i = 0; i < 7; i++) { 
     for (int j = 0; j < 6; ++i) 
     { 
      cout << all_columns[i][j] 
       << " "; 
     } 
    cout << "|\n"; 
    } 
    return; 
} 

int main() { 
    print_board(); 
    return 0; 
} 

私は「SIGSEGV(アドレス境界エラー)」を取得していますし、私は私の腐敗の脳に問題があることを見ることができないよう、私はここで何をしないのですか?

+1

おっと、それはかなりのスペースの無駄です。私はあなたが余分な変数なしで 'all_columns'の各"列 "を初期化できることを知っていれば幸いです。 – StoryTeller

+1

[タグ:status-norepro] – iBug

+1

内側のループを見てください。 – Incomputable

答えて

1

この問題は、内部ループの誤植によって発生します。それを避けるには、範囲ループを使用してください:

for (const auto& row: board) 
{ 
    for (auto cell: row) 
    { 
     //do something here 
    } 
} 

通常、標準アルゴリズムがありますが、まずそれを探してみてください。

関連する問題