Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;检查变量和0之间是否相等时,给出段错误(调试时)_C++ - Fatal编程技术网

C++ C++;检查变量和0之间是否相等时,给出段错误(调试时)

C++ C++;检查变量和0之间是否相等时,给出段错误(调试时),c++,C++,假设我有这样一个数组: 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,它就可以正常工作。为什么?甚至尝试将2d数组设置为int,同样的问题 for(int i = 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,它就可以正常工作。为什么?甚至尝试将2d数组设置为int,同样的问题

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);

}
将“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);

}
for(int i=0;i>buff;
当前行。推回(buff);
}
tab.推后(当前行);
}

这就是我填充它的方式。

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

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

如何声明
tab
?std::vector tab;我认为您应该显示实际填充
选项卡的代码部分
如何填充?A可能会有帮助。看起来问题仍然存在于您没有向我们展示的代码中。你能发布一个完整的小程序来演示这个问题吗?你如何声明
tab
?std::vector tab;我认为您应该显示实际填充
选项卡的代码部分
如何填充?A可能会有帮助。看起来问题仍然存在于您没有向我们展示的代码中。你能发布一个完整的小程序来演示这个问题吗?