![](/img/trans.png)
[英]Boost graph library: Get edge_descriptor or access edge by index of type int
[英]Printing boost::graph edge_descriptor
我使用的是boost::graph
,我注意到當我僅使用std::cout << *ei
, ei
是例如從boost::edges
命令獲得的邊緣迭代器,我看到類似“( x,y)“ ,其中x和y是整數。 我假設這些數字代表頂點描述符。 據此,我有一些問題:
boost::graph
vertex_descriptor
表示形式的默認類型是int嗎? edge_descriptor
operator<<
,以使輸出看起來像我上面描述的那樣? 否則,我無法理解它是如何工作的。 謝謝
問: boost :: graph中的vertex_descriptor表示形式的默認類型是否為int?
boost::graph
不是類型。
存在許多圖形類型(BGL是通用模板庫)。
vertex_descriptor的實際類型是不透明的,可以是整數。 例如,它與adjacecy_list
模板參數列表中的vecS
頂點容器選擇是不可或缺的adjacecy_list
。
問 :boost內部是否定義了用於edge_descriptor的operator <<,以使輸出看起來像我上面描述的那樣? 否則,我無法理解它是如何工作的。
是的 。 對於這種圖類型, boost/graph/detail/edge.hpp
以下operator<<
重載注入到名稱空間std
(請參見boost/graph/detail/edge.hpp
):
namespace std {
template <class Char, class Traits, class D, class V>
std::basic_ostream<Char, Traits>&
operator<<(std::basic_ostream<Char, Traits>& os,
const boost::detail::edge_desc_impl<D,V>& e)
{
return os << "(" << e.m_source << "," << e.m_target << ")";
}
}
¹請注意,可能是size_t
,而不是int
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.