我正在尝试使用stl实现邻接列表。我正在尝试使用列表向量:
std::vector<std::list<int> > graph;
我在图表中添加对象的代码是:
graph[size].push_back(8); //8 is an example
size++;
每次我尝试添加节点时都会出现分段错误,我不知道为什么。将节点添加到此数据结构的正确方法是什么?
答案 0 :(得分:0)
如果您想构建包含邻接列表的图表,您还可以使用graph[a].push_back()
。
说,现在你想在节点a和b之间添加关系,然后,你需要做的就是:
iterator = graph.find();
if(iterator != graph.end())
{
graph.insert(node);
}
添加节点很简单:
查找节点是否存在,如果不存在,则将其添加到图表中:
vector<list> graph
这将改善查找和插入时间的复杂性。 现在,你的find()和insert()都是O(1)操作。
如果您想继续使用graph.push_back({x,y,..})
,
使用{{1}}
答案 1 :(得分:0)