24 Mart 2017 Cuma

graph boost::get metodu

Giriş
Bu metod bir PropertyMap döndürür. Açıklaması burada.

get - Property Tag + graph
Birinci parametre property tag'idir. İkinci parametre Graph nesnesidir. C++11 kullanıyorsak auto değişken tanımlamak en kolayı. Şöyle yaparız.
auto vertexNameMap = boost::get (&boost::vertex_name, g);
Eğer kullanmıyorsak şöyle yaparız.
property_map<Graph, vertex_name_t>::type 
    vertexNameMap = boost::get(&boost::vertex_name, g);
Şöyle yaparız. Önce bir vertex nesnesi elde ederiz. Şöyle yaparız.
typedef boost::graph_traits <...>::vertex_descriptor SV; //Vertex type
SV v = boost::add_vertex (...,...); //We have a vertex now
Daha sonra bu map ile vertex veya edge'lerin property alanlarına erişilebilir. Şöyle yaparız.
vertexNameMap [v] == ...; //Access a property of vertex
get - Property Tag + graph + edge
Elimizde şöyle bir yapı olsun.
struct Edge {
  ...
  //boundary coordinates
  vector<cv::Point> boundary;
  ...

};
0 ve 1 vertex'leri arasındaki edge'e nokta eklemek için şöyle yaparız.
auto& boundary = boost::get(&Edge::boundary, g, boost::edge(0, 1, g));
boundary.emplace_back(2,2);


Hiç yorum yok:

Yorum Gönder