【发布时间】:2018-01-15 06:38:30
【问题描述】:
我正在使用 boost 库创建一个简单的图形,并尝试迭代顶点和边。但是我收到以下错误,代码可以迭代所有顶点,但是当我添加负责迭代边缘的最后一段代码时出现编译问题:
错误:从 'std::pair, boost::detail::out_edge_iter >, long unsigned int, boost::detail::edge_desc_impl, long int>, boost::adjacency_list >, boost::detail:: 转换adj_list_edge_iterator, boost::detail::out_edge_iter >, long unsigned int, boost::detail::edge_desc_impl, long int>, boost::adjacency_list > >' 到非标量类型'std::pair, boost::detail: :out_edge_iter<:__normal_iterator std::vector std::allocator> > >, long unsigned int, boost::detail::edge_desc_impl, long int>, boost::adjacency_list >, boost::detail ::adj_list_edge_iterator, boost::detail::out_edge_iter<:__normal_iterator std::vector std::allocator> > >, long unsigned int, boost::detail::edge_desc_impl, long int>, boost:: adjacency_list > >' 已请求 boost::adjacency_list::edge_iterator> es = boost::edges(g);
这是我的代码
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
int main()
{
using namespace std;
using namespace boost;
typedef adjacency_list< listS, vecS, directedS > digraph;
// instantiate a digraph object with 8 vertices
digraph g(8);
// add some edges
add_edge(0, 1, g);
add_edge(1, 5, g);
add_edge(5, 6, g);
add_edge(2, 3, g);
add_edge(2, 4, g);
add_edge(3, 5, g);
add_edge(4, 5, g);
add_edge(5, 7, g);
// represent graph in DOT format and send to cout
write_graphviz(cout, g);
std::cout<< "+++++++++++++++++++++++++++++++++++++\n";
std::cout<<"Print Vertices\n";
std::pair<boost::adjacency_list<>::vertex_iterator,
boost::adjacency_list<>::vertex_iterator> vs = boost::vertices(g);
std::copy(vs.first, vs.second,std::ostream_iterator<boost::adjacency_list<>::vertex_descriptor>{
std::cout, "\n"});
std::cout<< "+++++++++++++++++++++++++++++++++++++\n";
std::cout<<"Print Edges\n";
std::pair<boost::adjacency_list<>::edge_iterator,
boost::adjacency_list<>::edge_iterator> es = boost::edges(g);
std::copy(es.first, es.second,std::ostream_iterator<boost::adjacency_list<>::edge_descriptor>{
std::cout, "\n"});
return 0;
}
【问题讨论】: