如何将节点添加到列表向量?

时间:2015-10-04 22:45:04

标签: c++ stl adjacency-list

我正在尝试使用stl实现邻接列表。我正在尝试使用列表向量:

std::vector<std::list<int> > graph;

我在图表中添加对象的代码是:

graph[size].push_back(8);  //8 is an example 
size++;

每次我尝试添加节点时都会出现分段错误,我不知道为什么。将节点添加到此数据结构的正确方法是什么?

2 个答案:

答案 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)

您必须使用以下方式分配矢量:

n

其中which java是图表的节点数量。

http://ideone.com/udJQrm