C++ 如何对二维向量i,j施加条件
我试图写一个BFS代码,我无法理解这个错误。为什么我不能简单地使用 访问[i][j]==1C++ 如何对二维向量i,j施加条件,c++,vector,compiler-errors,operators,2d-vector,C++,Vector,Compiler Errors,Operators,2d Vector,我试图写一个BFS代码,我无法理解这个错误。为什么我不能简单地使用 访问[i][j]==1 int numIslands(vector<vector<char>>& grid) { int n = grid.size(); int m = grid[0].size(); vector<vector<int>> vis for (int i = 0; i < n; i++) {
int numIslands(vector<vector<char>>& grid)
{
int n = grid.size();
int m = grid[0].size();
vector<vector<int>> vis
for (int i = 0; i < n; i++)
{
vector<int>v;
for (int j = 0; j < m; j++)
{
v.push_back(0);
}
vis.push_back(v);
}
int count = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if ((vis[i][j] == 0) && (grid[i][j] == '1'))
{
bfs(grid, vis, i, j);
count++;
}
}
}
return count;
}
};
int numIslands(矢量和栅格)
{
int n=grid.size();
int m=网格[0]。大小();
向量可视
对于(int i=0;i
字符22:错误:“运算符==”不匹配(操作数类型为“\uu gnu\u cxx::\uu alloc\u traits>,std::vector>::值类型“{aka'std::vector'}和“int”)
如果((vis[i][j]==0)和(&(grid[i][j]==1'))像@user4581301在评论中说的那样,那么这里的主要问题是语法相关的 行
向量vis
需要一个尾随分号:向量vis代码>和最后一行,}代码>,不应该存在,至少没有周围类的上下文或类似定义
这是一个编译:
int numIslands(vector<vector<char>>& grid) {
int n = grid.size();
int m = grid[0].size();
vector<vector<int>> vis;
for(int i = 0; i < n; i++) {
vector<int> v;
for(int j = 0; j < m; j++) {
v.push_back(0);
}
vis.push_back(v);
}
int count = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
if((vis[i][j] == 0) && (grid[i][j] == '1')) {
bfs(grid, vis, i, j);
count++;
}
}
}
return count;
}
int numIslands(矢量和栅格){
int n=grid.size();
int m=网格[0]。大小();
矢量视觉;
对于(int i=0;i
我们不知道您对bfs(std::vector&,std::vector,int,int)
函数的定义。您还缺少使此语法可行所需的使用命名空间std
。如果没有它们,此代码段将无法编译 vector vis
缺少分号,此函数中的括号未对齐。如果这些是将代码转录到问题中的拼写错误,请修复它们。如果它们是源代码中的错误,请修复它们,看看你是否还有问题。我读了你的评论,你是对的。我最初误读了代码,我编辑了我的帖子,让我知道它是否有任何问题。请再次检查。