使用矢量的dfs实现给出了segfault

dfs implementation using vector gives segfault

本文关键字:segfault 实现 dfs      更新时间:2023-10-16

我正在字符串中用c++实现DFS usning堆栈,但不知怎么的,这段代码给了我segfault。在main中第一次推送后,我检查了使用gdb-it-segfault的情况。我缺少的是什么?

#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#define MAX_N 5001
using namespace std;
vector< vector<int> > g;
bool visited[MAX_N];
void dfs(int start){
    stack<int> s;
    s.push(start);
    while(!s.empty()){
        int current = s.top();
        s.pop();
        visited[current] = true;
        cout<<current<<"n";
        for(int i = 0; i < g[current].size() ; ++i){
            if(!visited[g[current][i]]){
                s.push(g[current][i]);
                visited[g[current][i]] = true;
            }
         }
    }
}
int main() {
    g[0].push_back(1);
    g[0].push_back(2);
    g[2].push_back(3);
    g[3].push_back(4);
    dfs(0);
    return 0;
}

您正在声明一个std::vector g

它有0个元素。

您正在尝试访问它的第一个元素(g[0])。

没有这样的要素。

请参阅cppreference:std::vector::operator[]