
I'll copy my code tomorrow, I'm not at my workstation right now. However,
I'm pretty sure that adapting the iterator is faster than copying the
values/keys into a collection in advance.
John
On 11/30/07, chun ping wang
hey i am curious on the actual code you written. Cause i want to know if doing that is faster than copying an item to a container and like iterate over that.
template < class T, class U, template
class CONT > CONT<T> getKeys(const boost::unordered_map & data) { CONT<T> retCont; typedef typename boost::unordered_map ::value_type value_type; BOOST_FOREACH(value_type val, data) { retCont.push_back(val.first); } return retCont; } Note i am using keys instead of value but concept is the same. On Nov 30, 2007 1:59 AM, John Kiopela
wrote: Thanks a lot both. Transform Iterator did the trick.
Kind regards,
John
On Nov 29, 2007 9:04 PM, Niels Aan de Brugh
wrote: On 2007-11-29, John Kiopela
wrote: I have been browsing through the docs, but I couldn't find anything
useful.
Does Boost have a std::map
::iterator adaptor which iterates over the values of the map only. What about using a boost::transform_iterator<>? Docs at:
http://boost.org/libs/iterator/doc/transform_iterator.html
You'd have to supply it with a function object that returns the 'second' member variable of the pair, e.g.
struct get_pair_value { template< typename K, typename V > V operator()( std::pair< K, V > const& pr ) { return pr.second; } };
Or you could use Boost.Lambda.
N.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users