頂点コンテナー セレクターをsetS
変更して、頂点記述子をストリーミングできないタイプに変更します。
BGL の他の多くのアルゴリズムと同様に、別の頂点インデックスを渡す必要があります。
の:VertexAndEdgeListGraph& g
有向グラフまたは無向グラフ。グラフのタイプは のモデルでなければなりません
VertexAndEdgeListGraph
。ほとんどの場合、グラフには内部
vertex_index
プロパティ マップが必要です。
外部頂点 ID マッピング
Live On Coliru
#include <boost/graph/graphviz.hpp>
#include <boost/graph/random.hpp>
#include <random>
int main(int,char*[])
{
using namespace boost;
typedef boost::adjacency_list<setS, setS, directedS> Graph;
Graph g;
std::mt19937 prng{std::random_device{}()};
generate_random_graph(g, 3, 5, prng);
std::map<Graph::vertex_descriptor, size_t> ids;
for (auto u : make_iterator_range(vertices(g)))
ids[u] = ids.size();
default_writer w;
write_graphviz(std::cout, g, w, w, w, make_assoc_property_map(ids));
}
プリントなど
digraph G {
1;
2;
3;
1->2 ;
2->1 ;
2->3 ;
3->1 ;
3->2 ;
}
内部プロパティ マップ:
あまり変更せずにプロパティを内部に配置できます。
Live On Coliru
#include <boost/graph/graphviz.hpp>
#include <boost/graph/random.hpp>
#include <random>
int main(int,char*[])
{
using namespace boost;
typedef boost::adjacency_list<setS, setS, directedS, property<vertex_index_t, size_t> > Graph;
Graph g;
std::mt19937 prng{std::random_device{}()};
generate_random_graph(g, 3, 5, prng);
auto ids = get(vertex_index, g);
size_t num = 0;
for (auto u : make_iterator_range(vertices(g)))
put(ids, u, num++);
write_graphviz(std::cout, g);
}