Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++ 基于范围的for循环和普通for循环深度优先搜索实现之间的差异_C++_For Loop_Range Based Loop - Fatal编程技术网

C++ 基于范围的for循环和普通for循环深度优先搜索实现之间的差异

C++ 基于范围的for循环和普通for循环深度优先搜索实现之间的差异,c++,for-loop,range-based-loop,C++,For Loop,Range Based Loop,我正在尝试为图形数据结构实现深度优先搜索算法,我的函数如下所示: void dfs(int x, vector <v_Int>& Adjacency_List, v_Int& visited) { visited[x] = 1; //Mark current vertex as visited for (int i = 0; i < Adjacency_List[x].size(); i++) { //Iterate through all n

我正在尝试为图形数据结构实现深度优先搜索算法,我的函数如下所示:

void dfs(int x, vector <v_Int>& Adjacency_List, v_Int& visited) {
    visited[x] = 1; //Mark current vertex as visited
     for (int i = 0; i < Adjacency_List[x].size(); i++) { //Iterate through all neighbours of vertex x
        if (visited[i] != 1) { //If neighbour not visited, recursively go there
            dfs(i, Adjacency_List, visited);
        }
    }
}
只要调用dfs函数,访问的数组就会相应地更新。我不太清楚为什么第二个实现可以工作,但我的初始实现没有,因为两个实现似乎具有相似的逻辑。谢谢你的帮助


编辑:v_Int是一个typedef,我在第一个实现中声明为整数向量,邻居不是I,它的邻接列表[x][I]

int neighbour = Adjacency_List[x][i];
if (visited[neighbour] != 1) { //If neighbour not visited, recursively go there
    dfs(neighbour, Adjacency_List, visited);
}

您将
i
替换为
v
,但是
v
实际上相当于
邻接列表[x][i]
。什么是
v\u Int
visited[v]
将一个
v_Int
与另一个
v_Int
建立索引,我很惊讶它能够编译。这两个循环完全不同。第一个使用
i
作为索引,值从0到
size()-1
。范围循环使用
访问的
数组中的实际值。职业训练局是一个打字错误。
int neighbour = Adjacency_List[x][i];
if (visited[neighbour] != 1) { //If neighbour not visited, recursively go there
    dfs(neighbour, Adjacency_List, visited);
}