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