我有一个顶点列表作为一个大数组:
vert[N]
100, 1350, 200, 400, 12000, ....
这意味着标签保存在以下数组中:v [1] = 100,v [2] = 1350,v [3] = 200,v [4] = 400,v [5] = 12000 ,....
我也知道连接关系
100 12000
1350 200
400 15000
.
.
.
所以,edge也在另一个数组n [1] = 12000,n [2] = 200,n [3] = 15000,....所以它意味着100连接到12000。 如何使用这些输入在boost中创建图形。
答案 0 :(得分:0)
我们假设标签是标准字符串。
您需要做的第一件事就是将标签存储在一个集合中,以确保没有重复项,您可以快速找到特定标签的索引。
std::set<std::string> set_vertex_labels;
for( int i = 0; i < size_of_vert; i++ ) {
set_vertex_labels.insert( vert[i] );
}
现在假设您可以迭代连接数据,获取边缘的两个标签
std::string label1, label2;
magic_function_to_get_next_two_connected_labels( label1, label2 );
找到第一个连接顶点的索引
std::set<std::string>::iterator it = set_vertex_labels.find( label1 );
if( it == set_vertex_labels.end() ) {
// oops!
exit(1);
}
int index_vertex1 = std::distance( set_vertex_labels.begin(), it );
对第二个顶点执行相同的操作。
最后,您已准备好将优势插入图表
add_edge( index_vertex1, index_vertex2, myGraph );