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 <cablepuff@gmail.com> wrote:
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 <typename ELEM, typename = std::allocator<ELEM> >
       class CONT
    >
CONT<T> getKeys(const boost::unordered_map<T, U>& data)
{
    CONT<T> retCont;
    typedef typename boost::unordered_map<T, U>::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 <john.kiopela@gmail.com> wrote:
Thanks a lot both. Transform Iterator did the trick.
 
Kind regards,
 
John

 
On Nov 29, 2007 9:04 PM, Niels Aan de Brugh <niels@invalid.org> wrote:
On 2007-11-29, John Kiopela <john.kiopela@gmail.com> wrote:
>
> I have been browsing through the docs, but I couldn't find anything useful.
> Does Boost have a std::map<K, V>::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