2
내 boost::graph
을 다음과 같이 정의하면 모든 에지에 대해 가장자리 인덱스가 0이됩니다. 왜? 내가 도대체 뭘 잘못하고있는 겁니까?가장자리가 모두 0 인 edge_index?
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
int main() {
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, boost::no_property, boost::property<boost::edge_index_t, std::size_t> > Graph;
typedef boost::graph_traits<Graph>::edge_descriptor Edge;
Graph g(3);
Edge e1 = boost::add_edge(0, 1, g).first;
Edge e2 = boost::add_edge(1, 2, g).first;
Edge e3 = boost::add_edge(2, 0, g).first;
boost::property_map<Graph, boost::edge_index_t>::type eim = boost::get(boost::edge_index, g);
size_t e1n = eim[e1],
e2n = eim[e2],
e3n = eim[e3];
return 0;
}
설명서와 예제에서 알 수있는 한,이 방법이 효과적입니다.
[이 예제] (http://www.boost.org/doc/libs/1_46_1/libs/graph/doc/using_property_maps.html#sec:exterior-properties)를 보면, 그들은'adjacency_list'를 사용하고 있습니다. 가장자리 색인. 권리? 또는 나는 무엇인가 놓치고 있냐? – carlpett
@carlpett, 그들이 add_edge (0, 1, 0, G)에서 수동으로 할당하는'property>를 알아 차려라. –
Ah ... 고마워! – carlpett