使用矢量的dfs实现给出了segfault
dfs implementation using vector gives segfault
我正在字符串中用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[]
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- C++中带有List类的迭代器Segfault
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- 使用Vulkan hpp vk::enumerateInstanceVersion()会导致segfault
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 试图用c++编写我自己的链表实现,在点击列表中的3个元素后编写segfault代码
- gtkmm实现康威生命博弈中的Segfault
- 使用矢量的dfs实现给出了segfault