我使用的是一个boost::graph,我注意到当我只使用std::cout << *ei时,ei是从boost::edges命令获得的边迭代器,我看到像"(x,y)"这样的东西是打印出来的,其中x和y是整数。我假设这些数字代表顶点描述符。根据这一点,我有一些问题:
vertex_descriptor表示在boost::graph中的默认类型是int吗?operator<<的edge_descriptor,以使输出看起来像我前面描述的那样?否则,我就无法理解它是如何运作的。谢谢
发布于 2015-03-10 16:23:49
Q.在boost::graph int中vertex_descriptor表示的默认类型是?
boost::graph不是一种类型。
存在许多图形类型(BGL是一个通用模板库)。
实际类型的vertex_descriptor是不透明的,可以积分。例如,它与vecS模板参数列表中的adjacecy_list顶点容器选择为整数。
Q.,在boost中定义了用于edge_descriptor的operator<<,使输出看起来像我前面描述的那样吗?否则,我就无法理解它是如何运作的。
是。对于这样的图形类型,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
https://stackoverflow.com/questions/28967478
复制相似问题