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,它工作正常。为什么?甚至尝试将二维数组设为 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

您似乎正在访问数组边界之外的内存。可能导致这种情况的一件事是如果 tab[0][?] == var. 这会导致您的条件检查 tab[-1][?] 并生成异常。

于 2013-04-06T16:58:03.347 回答