$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: John Kiopela (john.kiopela_at_[hidden])
Date: 2007-12-02 07:26:32
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_at_[hidden]> 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_at_[hidden]> 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_at_[hidden]> wrote:
> >
> > > On 2007-11-29, John Kiopela <john.kiopela_at_[hidden]> 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_at_[hidden]
> > > http://listarchives.boost.org/mailman/listinfo.cgi/boost-users
> > >
> > >
> >
> >
> >
> > _______________________________________________
> > Boost-users mailing list
> > Boost-users_at_[hidden]
> > http://listarchives.boost.org/mailman/listinfo.cgi/boost-users
> >
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://listarchives.boost.org/mailman/listinfo.cgi/boost-users
>