0

次のような配列があるとしましょう:

1 0 0 
0 2 1
0 1 0

そのため、2 を超える数が 0 かどうかを確認し、真であれば 2 に変更したいと思います。i = 1 および j = 1 と仮定すると、次のようになります。

string var = "2";
if(tab[i][j] == var && tab[i-1][j] == "0") {
       tab[i-1][j] = "2";
}

ここでセグメント違反が発生します。if ステートメントで 0 を 1 に変更すると、正常に動作します。なんで?2 次元配列を int にしようとしても、同じ問題が発生しました。

「0」を「0」に、またはその逆に変更 = 同じ問題。

for(int i = 0; i < n; i++) {
    vector<string> current_row;
    for(int j =0; j < m; j++) {
        myfile >> buff;
        current_row.push_back(buff);
    }
    tab.push_back(current_row);

}

それが私がそれを移入する方法です。

4

1 に答える 1

4

配列の境界外のメモリにアクセスしているようです。その原因の 1 つは、tab[0][?] == var の場合です。これにより、条件が tab[-1][?] をチェックし、例外が生成されます。

于 2013-04-06T16:58:03.347 に答える