增强BGL:边缘属性贴图
Boost BGL: Edge property maps?
我试图让一个图给定的连接边的列表,但我的边都有一个分数(一个权重)和一个trans(一个用户定义的数据类型,基本上是从一个点到另一个变换矩阵)。我已经尝试了很多方法来做到这一点,但我检查的每个网站(包括stackoverflow)都有不同的方法来做到这一点,这并不是100%适合我的问题。我已经尝试了所有的方法,但现在我决定使用以下方法:
struct EdgeInfoProperty{
int score;
Trans trans;
};
typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, boost::no_property, EdgeInfoProperty > mygraph;
typedef mygraph::edge_descriptor Edge;
mygraph G;
for (i..i++){//some is
for(j..j++){//some js
boost::graph_traits<mygraph>::vertex_descriptor u, v;
u = vertex(i, G);
v = vertex(j, G);
EdgeInfoProperty property_uv;
property_uv.score=s[i]+s[j];//some score
property_uv.trans = T[i]*T[j];
boost::add_edge(u,v,property_uv,G);
}
}
但是从我从大多数网站上可以看出,只声明一个结构体是不够的…
的确,现在当我试着打印我的图表时:
typedef boost::property_map<mygraph, boost::vertex_index_t>::type IndexMap;
IndexMap index = get(boost::vertex_index, G);
std::cout << "vertices(g) = ";
typedef boost::graph_traits<mygraph>::vertex_iterator vertex_iter;
std::pair<vertex_iter, vertex_iter> vp;
for (vp = boost::vertices(G); vp.first != vp.second; ++vp.first)
std::cout << index[*vp.first] << " ";
std::cout << std::endl;
std::cout << "edges(g) = ";
boost::graph_traits<mygraph>::edge_iterator ei, ei_end;
for (boost::tie(ei, ei_end) = edges(G); ei != ei_end; ++ei)
//----- how do I get the edge property?
//EdgeInfoProperty prop = boost::get(EdgeInfoProperty, *ei);
std::cout << "(" << index[source(*ei, G)]<< "," << index[target(*ei, G)] << ") ";
当我试图获得EdgeInfoProperty
道具以便最终打印出prop.score
时,我得到
error C2275: 'ConnGraph::MakeKinectGraph::EdgeInfoProperty' : illegal use of this type as an expression
帮助。这是一个研究项目,如果我不能超越它,我就无法进入更有趣的部分。
使用
G[*ei].score
G[*ei].trans
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++概念:如何使用'concept'检查模板化结构的属性?
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 通过指向指针数组的指针访问子类的属性
- MSVC是否支持C++11样式的属性而不是__declspec
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 类的C++属性似乎已重新初始化
- Qt Quick-如何仅从c++代码与qml属性交互
- 用概念检查属性的类型
- C++如何将同一类的实例作为属性
- 如何使用提升make_label_writer写入边缘属性?
- 如何在Boost Graph库中的Grid_graph的边缘添加自定义属性
- 如何使用属性包添加边缘以提升::adjacency_matrix
- 使用自定义的边缘属性 boost::adjacency_list 遍历边缘
- 为什么在 BGL 中的访客中无法更改边缘属性?
- 提升图形库 - 将矢量推送到边缘属性
- Boost:列出GraphMl中指定的顶点和边缘属性
- BGL:邻接列表为描述符返回错误的边缘属性
- 增强BGL:边缘属性贴图
- 在创建图形之前设置边缘属性