Giriş
Şu satırı dahil ederiz.
compressed_sparse_row_graph sınıfının verdiği get metodunun imzası şöyle
typedef ile yapılır. Şöyle yaparız.
Elimizde şöyle bir graph olsun
Elimizde şöyle bir graph olsun
Şu satırı dahil ederiz.
#include <boost/property_map/property_map.hpp>
property_map sınıfı default consructor'a sahip değil. Bir graph'ın verdiği get metodu ile elde edilir. property_map bir iterator ile beraber çalışır. Verilen iterator'ün property alanını döndürür.compressed_sparse_row_graph sınıfının verdiği get metodunun imzası şöyle
// Property map accessors
template<typename PropertyTag>
property_map<compressed_sparse_row_graph, PropertyTag>::type
get(PropertyTag, compressed_sparse_row_graph& g)
Tanımlama - Graph + vertex veya edge propertytypedef ile yapılır. Şöyle yaparız.
typedef boost::compressed_sparse_row_graph<boost::bidirectionalS,
boost::no_property, boost::property<boost::edge_weight_t, int> > Graph;
typedef typename boost::property_map<Graph, boost::edge_weight_t>::type WeightMap;
edge_weight_tElimizde şöyle bir graph olsun
typedef boost::adjacency_list<...
,...,...,...,boost::edge_weight_t> GraphType;
Elimizde şöyle bir graph olsuntypedef boost::adjacency_list<...,..., ...,...,
boost::property<boost::edge_weight_t, float> > GraphType
;
Her ikisi için de şöyle yaparız.typedef boost::property_map<GraphType, boost::edge_weight_t
>::type EdgeWeightMap;
Dolaşmak için şöyle yaparız.EdgeWeightMAp edgeWeightMap = get(boost::edge_weight_t(), g);
using edge_iter = boost::graph_traits<GraphType>::edge_iterator;
std::pair<edge_iter, edge_iter> edgePair;
for(edgePair = edges(g); edgePair.first != edgePair.second; ++edgePair.first) {
std::cout << edgeWeightMap[*edgePair.first] << " ";
}
vertex_index_ttypedef boost::adjacency_list<...
,...,...,boost::vertex_index_t,...> GraphType;
Şöyle yaparız.typedef boost::property_map<GraphType, boost::vertex_index_t>::type
VertexIndexMap;
Hiç yorum yok:
Yorum Gönder