Hi Stas,
The edge_iterator's of the BGL are read only. You can not reorder the
graph through the iterators.
By using a custom container (use a std::set with your custom comparison
function) for the EdgeList type, you can get the out-edges of each vertex
sorted, but there currently is not a way to get the entire edge list
sorted.
People keep asking about this... I need to look into providing better
support for this. Or if someone else wants to look into this, we'd all be
grateful.
Cheers,
Jeremy
On Tue, 18 Jun 2002, stas_fomin wrote:
stas_f> Hello.
stas_f> I a newbie in BGL and I rewrite my LEDA code now...
stas_f>
stas_f> I have to sort (order) edges according to some functor.
stas_f>
stas_f> For example (simplified):
stas_f>
stas_f> typedef adjacency_list MyGraph;
stas_f> typedef graph_traits < MyGraph >::edge_descriptor MyGraphEdge;
stas_f> typedef graph_traits < MyGraph >::edge_iterator MyEdgeIter;
stas_f>
stas_f> class MyCompareEdges{
stas_f> public:
stas_f> bool operator()(MyGraphEdge e1, MyGraphEdge e2) const
stas_f> {
stas_f> return true;
stas_f> }
stas_f> };
stas_f>
stas_f> ....
stas_f>
stas_f> {
stas_f> MyGraph Gr(10);
stas_f> MyEdgeIter ei_beg, ei_end;
stas_f> MyCompareEdges comp;
stas_f> tie(ei_beg, ei_end) = edges(Gr);
stas_f> std::sort(ei_beg, ei_end, comp); //Error C2676
stas_f> }
stas_f>
stas_f> And I have error C2676 (below the message...).
stas_f>
stas_f> Questions:
stas_f> 1. Is it possible to sort edges in the graph?
stas_f> 2. How to...
stas_f>
stas_f>
stas_f> Thanks all in advance...
stas_f> Stas Fomin.
stas_f>
stas_f> P.S.
stas_f> vecS, setS, listS for edge container... - C2676.
stas_f>
stas_f> ------------------------------
stas_f> d:\projects\lib\cpp_libs\libboost\boost\iterator_adaptors.hpp(264) :
stas_f> error C2676: binary '+=' : 'class std::list<struct
stas_f> boost::list_edge,class
stas_f> std::allocator no_property> > >::iterator' does not define this operator or a
stas_f> conversion to a type acceptable to the predefined operator
stas_f> d:\projects\lib\cpp_libs\libboost\boost\iterator_adaptors.hpp
stas_f> (911) : see reference to function template instantiation 'void
stas_f> __thiscall boost::default_iterator_policies::advance(struct
stas_f> boost::iterator_adaptor,class
stas_f> std::allocator boost::no_property> > >::iterator,struct
stas_f> boost::detail::undirected_edge_iter_policies,class
stas_f> boost::detail::edge_desc_impl<struct boost::b
stas_f> idirectional_tag,unsigned int>,class
stas_f> boost::detail::edge_desc_impl<struct
stas_f> boost::bidirectional_tag,unsigned int>,class
stas_f> boost::detail::edge_desc_impl<struct
stas_f> boost::bidirectional_tag,unsigned int> *,struct
stas_f> boost::multi_pass_input_iterator_tag,int> &,i
stas_f> nt)' being compiled
stas_f> Error executing cl.exe.
stas_f>
stas_f>
stas_f>
stas_f>
stas_f>
stas_f>
stas_f> Info: http://www.boost.org
stas_f> Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl
stas_f> Unsubscribe: mailto:boost-users-unsubscribe@yahoogroups.com
stas_f>
stas_f>
stas_f> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
stas_f>
stas_f>
----------------------------------------------------------------------
Jeremy Siek http://php.indiana.edu/~jsiek/
Ph.D. Student, Indiana Univ. B'ton email: jsiek@osl.iu.edu
C++ Booster (http://www.boost.org) office phone: (812) 855-3608
----------------------------------------------------------------------