C++ 创建无图的边描述符

C++ 创建无图的边描述符,c++,boost,C++,Boost,在我的项目中,我使用一个存储所有边的文件;另一个存储边缘概率。我想用Boost库来表示图形,用unordered\u map来表示概率。我有以下代码 typedef boost::adjacency_list <boost::vecS, boost::vecS, boost::bidirectionalS> DiGraph; typedef boost::graph_traits<SubGraph>::vertex_descriptor vertex_t; typedef

在我的项目中,我使用一个存储所有边的文件;另一个存储边缘概率。我想用
Boost
库来表示图形,用
unordered\u map
来表示概率。我有以下代码

typedef boost::adjacency_list <boost::vecS, boost::vecS, boost::bidirectionalS> DiGraph;
typedef boost::graph_traits<SubGraph>::vertex_descriptor vertex_t;
typedef boost::graph_traits<SubGraph>::edge_descriptor edge_t;

unordered_map<edge_t, double> P;

ifstream infile(prob_filename);
double p;
int u, v;
while (infile >> u >> v >> p) {
    P[make_pair(u, v)] = p;
}
typedef boost::邻接列表有向图;
typedef boost::graph_traits::vertex_描述符vertex_t;
typedef boost::graph_traits::edge_描述符edge_t;
无序图P;
ifstream infle(prob_文件名);
双p;
INTU,v;
而(填充>>u>>v>>p){
P[make_pair(u,v)]=P;
}
但是,我不需要将一对作为密钥,而是一个边描述符
edge\u t
。如何使用给定的两个值u和v创建边描述符。

DirectedGraph有向图(V);
{
图特征:顶点描述符u,v;
u=顶点(0,有向图);//从文件中读取这些顶点,而不是0,1
v=顶点(1,有向图);
//填充图
添加_边(有向图,u,v,权重(1.2));//从文件中读取权重(prob)
boost::graph_traits::edge_描述符e;
布尔发现;
boost::tie(e,found)=边(u,v,有向图);
//使用属性映射
属性映射::类型
权重=获取(边\权重,有向图);
cout

DirectedGraph有向图(V);
{
图特征:顶点描述符u,v;
u=顶点(0,有向图);//从文件中读取这些顶点,而不是0,1
v=顶点(1,有向图);
//填充图
添加_边(有向图,u,v,权重(1.2));//从文件中读取权重(prob)
boost::graph_traits::edge_描述符e;
布尔发现;
boost::tie(e,found)=边(u,v,有向图);
//使用属性映射
属性映射::类型
权重=获取(边\权重,有向图);
库特
DirectedGraph digraph(V);
  {
    boost::graph_traits<DirectedGraph>::vertex_descriptor u, v;
    u = vertex(0, digraph); // read these instead 0,1 from from your file
    v = vertex(1, digraph);
    // populate graph
    add_edge(digraph, u, v, Weight(1.2)); // read weight (prob) instead from from your file

    boost::graph_traits<DirectedGraph>::edge_descriptor e;
    bool found;
    boost::tie(e, found) = edge(u, v, digraph);

    //use property map
    property_map<DirectedGraph, edge_weight_t>::type
      weight = get(edge_weight, digraph);

    cout << "weight[(u,v)] = " << get(weight, e) << endl;

  }