Re: [Boost-users] [BGL] Is adjacency_iterator not Equality Comparable?
Dear Jeremiah,
Could you please send a complete program that I can try to compile here?
Please find a minimalist (but different) example in the attachments. I currently do know what's wrong but it's probably still better for my next question to attach the file. Consider the following line in my attached code: iterator pos = find(begin, end, "3"); I know that this line doesn't compile because the value type of vertex iterator is not necessarily the same as VertexProperties. But, then, is there a simple way to find the vertex iterator that points to "3"? (I mean something as succinct as the above line of code. I DO already know that it's possible to pass an ugly function object to help find(). But, that's far too ugly.) TIA, --Hossein
Please find a minimalist (but different) example in the attachments. I currently do know what's wrong but it's probably still better for my next question to attach the file. Consider the following line in my attached code:
iterator pos = find(begin, end, "3");
I know that this line doesn't compile because the value type of vertex iterator is not necessarily the same as VertexProperties. But, then, is there a simple way to find the vertex iterator that points to "3"? (I mean something as succinct as the above line of code. I DO already know that it's possible to pass an ugly function object to help find(). But, that's far too ugly.)
What about this (not tested)? typedef property<graph_type, vertex_bundle_t>::const_type pm_type; pm_type props(get(vertex_bundle, g)); typedef graph_traits<graph_type>::vertex_iterator v_iter_type; std::pair<v_iter_type, v_iter_type> verts(vertices(g)); typedef property_map_iterator_generator<pm_type, v_iter_type>::type iter_type; iter_type pos = find(make_property_map_iterator(props, verts.first), make_property_map_iterator(props, verts.second), "3"); v_iter_type pos_v = pos.base(); vertex_descriptor v = *pos_v; This needs <boost/property_map/property_map_iterator.hpp> to be included, plus all of the usual graph stuff. -- Jeremiah Willcock
Dear Jeremiah,
What about this (not tested)?
typedef property<graph_type, vertex_bundle_t>::const_type pm_type;
The above line didn't work so I changed property<> to property_map<>. But, the rest of your code doesn't compile either. Please find the build-log in the P.S. Any suggestions? TIA, --Hossein P.S. main.cpp:69: error: no matching function for call to 'boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, const boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::vertex_bundle_t>::vec_adj_list_vertex_property_map(boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::vertex_bundle_t>)' /boost/graph/detail/adjacency_list.hpp:2504: note: candidates are: boost::vec_adj_list_vertex_property_map<Graph, GraphPtr, ValueType, Reference, Tag>::vec_adj_list_vertex_property_map(GraphPtr) [with Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, GraphPtr = const boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, ValueType = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Reference = const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, Tag = boost::vertex_bundle_t] /boost/graph/detail/adjacency_list.hpp:2503: note: boost::vec_adj_list_vertex_property_map<Graph, GraphPtr, ValueType, Reference, Tag>::vec_adj_list_vertex_property_map() [with Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, GraphPtr = const boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, ValueType = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Reference = const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, Tag = boost::vertex_bundle_t] /boost/graph/detail/adjacency_list.hpp:2498: note: boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, const boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::vertex_bundle_t>::vec_adj_list_vertex_property_map(const boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>, const boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::no_property, boost::no_property, boost::listS>*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::vertex_bundle_t>&) main.cpp:78: error: 'vertex_descriptor' was not declared in this scope main.cpp:78: error: expected ';' before 'v'
participants (2)
-
Hossein Haeri
-
Jeremiah Willcock