C++ 是否有任何方法可以将元素添加到列表中,如图所示?
我正在尝试向向量中的列表添加元素。addEdge方法中发生错误,因为它无法访问所需的容器(分段错误)。图形是一个向量,其中每个容器包含一个连接到它的顶点列表(以及该边的权重,在本例中为0) M是边的数量,n是顶点的数量。我以前用简单数组做过很多次,但还没有用向量做过。 该课程包括:C++ 是否有任何方法可以将元素添加到列表中,如图所示?,c++,list,vector,graph,C++,List,Vector,Graph,我正在尝试向向量中的列表添加元素。addEdge方法中发生错误,因为它无法访问所需的容器(分段错误)。图形是一个向量,其中每个容器包含一个连接到它的顶点列表(以及该边的权重,在本例中为0) M是边的数量,n是顶点的数量。我以前用简单数组做过很多次,但还没有用向量做过。 该课程包括: int n; int m; bool directed; std::vector<std::list<std::pair<int, int>>> graph; intn; int
int n;
int m;
bool directed;
std::vector<std::list<std::pair<int, int>>> graph;
intn;
int m;
布尔定向;
向量图;
在graph.reserve(n)
之后,graph.size()
仍然为零<代码>保留
影响向量的容量,而不是其大小。然后,graph[x-1]
通过访问索引越界(任何x
值都会产生索引越界,因为向量为空)
您可能是指图形。调整大小(n)
不确定要执行的操作。。。是否要将项目添加到图表中的列表中,还是将列表添加到图表中?我无法获取图表的容器格式。为什么要使用std::list
?为什么不直接使用std::map
,其中Edge
是一个包含更多信息的类型(如果需要)。第一个方法(构造函数)中肯定有输入错误。什么是线上的图形
?另外,我不明白你想做什么,为什么向我们展示这两种方法/函数。这是更好的解决方案吗?我知道我占用了更多的内存,但在地图上搜索的时间复杂度是多少?是log n吗?@Vojin我们还是不知道你想干什么。图形的容器看起来不像是一个简单的图形。请在问题中添加更多信息。是std::map
是O(logn)<代码>标准::无序映射
为O(1)。
int n;
int m;
bool directed;
std::vector<std::list<std::pair<int, int>>> graph;