|
Boost Users : |
From: David Abrahams (dave_at_[hidden])
Date: 2004-11-18 16:09:44
Chris Goller <cgoller_at_[hidden]> writes:
> I'm just getting into boost and I really like it.
>
> I would like to iterate over keys of a multimap.
>
> so it would look like this:
>
>
> std::multimap<type, type>::key_iterator i = map.beginkey(); i !=
> map.endkey(); i++
> at each i++ it would move to the next key.
>
> -or-
>
> for_each(map.beginkey(), map.endkey(), whatever);
>
>
> Is this possible with the boost iterators?
You can't use that syntax, because there's no way to inject a
key_iterator member into std::multimap. You could use a
transform_iterator over the multimap's native iterator with select1st,
defined as:
struct select1st
{
template <class T, class U>
T& operator()(std::pair<T,U>& p) const
{ return p.first }
template <class T, class U>
T const& operator()(std::pair<T,U> const& p) const
{ return p.first }
};
HTH,
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net