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

C++ 如何将节点添加到列表向量中?,c++,stl,adjacency-list,C++,Stl,Adjacency List,我正在尝试使用stl实现一个邻接列表。我尝试使用列表向量: std::vector<std::list<int> > graph; 每次我尝试添加一个节点时,我都会遇到分段错误,我不知道为什么。向该数据结构中添加节点的正确方法是什么?如果要构建具有邻接列表的图,也可以使用无序映射图 比如说,现在您想在节点a和b之间添加一个关系,那么您需要做的就是: graph[a].push_back() 添加节点很简单: 查找节点是否存在,如果不存在,则将其添加到图形: itera

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

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

每次我尝试添加一个节点时,我都会遇到分段错误,我不知道为什么。向该数据结构中添加节点的正确方法是什么?

如果要构建具有邻接列表的图,也可以使用
无序映射图

比如说,现在您想在节点a和b之间添加一个关系,那么您需要做的就是:

graph[a].push_back()
添加节点很简单:

查找节点是否存在,如果不存在,则将其添加到图形:

iterator = graph.find();

if(iterator != graph.end())
{
    graph.insert(node);    

}
这将改善查找和插入时间的复杂性。 现在,find()和insert()都是O(1)操作

如果要继续使用
矢量图


使用
graph.push_back({x,y,…})

如果你想用邻接列表构建一个图,你也可以使用
无序的地图图

比如说,现在您想在节点a和b之间添加一个关系,那么您需要做的就是:

graph[a].push_back()
添加节点很简单:

查找节点是否存在,如果不存在,则将其添加到图形:

iterator = graph.find();

if(iterator != graph.end())
{
    graph.insert(node);    

}
这将改善查找和插入时间的复杂性。 现在,find()和insert()都是O(1)操作

如果要继续使用
矢量图


使用
图形。向后推({x,y,…})

您必须使用以下方法分配向量:

std::vector graph(n,std::list())

其中
n
是图形的节点数


必须使用以下方法分配向量:

std::vector graph(n,std::list())

其中
n
是图形的节点数