【发布时间】:2014-12-11 01:15:37
【问题描述】:
我正在尝试使用 boost 和三个独立的向量来实现一个图形:
std::vector<std::string> vertex_array;
std::vector<Edge> edge_array;
std::vector<int> weight_array;
边缘定义为:
typedef std::pair<std::string, std::string> Edge;
我的图表定义为:
typedef adjacency_list<vecS, vecS, undirectedS> Graph;
数组都填充了我从输入文件中获得的数据,因此顶点向量中的第一个元素类似于“A”,边向量中的第一个元素类似于(B,C)权重向量中的第一个元素将是边向量中第一条边的权重,在这种情况下为 BC。
问题是,我对 C++ 不是很流利,而且我对 boost 和图形也很陌生。我试过查看 boost 网站上的示例代码,但它们都使用数组而不是向量。我确实尝试了这个示例代码:
Graph g(edge_array, edge_array + sizeof(edge_array) / sizeof(Edge), num_vertices);
我确实有一个 num_vertices 变量,但它仍然给我一个错误。
有谁知道如何创建一个包含边、顶点和权重向量的图形,我最终可以使用 Dijkstra 的 boost 版本?
对不起,如果这个问题真的很模糊或基本,我真的对使用 boost 和实现图表一无所知。
【问题讨论】:
-
试试
Graph g(&edge_array[0], &edge_array[0] + edge_array.size(), num_vertices); -
@MattMcNabb 它去掉了红色波浪线,但它给了我编译器错误 C2182:非法使用类型 'void'