Public Member Functions | Protected Types | Protected Attributes | Friends

MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare > Class Template Reference

STL-style iterator for MultiMap. More...

#include <multimap.hpp>

Public Member Functions

 MultiMapIterator ()
 Simple, dangerous constructor to allow later assignment with operator=.
template<class Tnon_const >
 MultiMapIterator (Tnon_const mi)
 Constructor to allow possibly const iterators to be assigned from possibly non-const map iterators.
 MultiMapIterator (Tmap_iter mi, Tlist_iter li)
 Constructor to allow specifying an exact position in map and list.
template<class Tnon_const >
Selfoperator= (Tnon_const mi)
 Assignment iterator like constructor with the same signature.
Tvalue & operator* () const
 Dereference operator.
Tvalue * operator-> () const
 Same as operator*(), but returns a pointer.
const Tmap_iter & GetMapIter () const
const Tlist_iter & GetListIter () const
bool ListValid () const
const Tkey & GetKey () const
Selfoperator++ ()
 Prefix increment operator.
Self operator++ (int)
 Postfix increment operator.
Selfoperator-- ()
 Prefix decrement operator.
Self operator-- (int)
 Postfix decrement operator.

Protected Types

typedef MultiMapIterator
< Tmap_iter, Tlist_iter, Tkey,
Tvalue, Tcompare > 
Self

Protected Attributes

Tlist_iter list_iter
 Iterator pointing to current position in the current list of items with equal keys.
Tmap_iter map_iter
 Iterator pointing to the position of the current list of items with equal keys in the map.
bool list_valid
 Flag to show that the iterator has just "walked" a step in the map.

Friends

class MultiMap< Tkey, Tvalue, Tcompare >

Detailed Description

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
class MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >

STL-style iterator for MultiMap.

Template Parameters:
Tmap_iter Iterator type for the map in the MultiMap.
Tlist_iter Iterator type for the lists in the MultiMap.
Tkey Key type of the MultiMap.
Tvalue Value type of the MultMap.
Tcompare Comparator type for keys of the MultiMap.

Definition at line 30 of file multimap.hpp.


Constructor & Destructor Documentation

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
template<class Tnon_const >
MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::MultiMapIterator ( Tnon_const  mi  )  [inline]

Constructor to allow possibly const iterators to be assigned from possibly non-const map iterators.

You can assign end() like this.

Template Parameters:
Tnon_const Iterator type assignable to Tmap_iter (which might be const).
Parameters:
mi One such iterator.

Definition at line 62 of file multimap.hpp.

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::MultiMapIterator ( Tmap_iter  mi,
Tlist_iter  li 
) [inline]

Constructor to allow specifying an exact position in map and list.

You cannot construct end() like this as the constructor will actually check li and mi->second for list_valid.

Parameters:
mi Iterator in the map.
li Iterator in the list.

Definition at line 71 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_iter, MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_valid, and MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.


Member Function Documentation

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Tvalue& MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator* (  )  const [inline]

Dereference operator.

Works just like usual STL operator*() on various containers. Doesn't do a lot of checks for sanity, just like STL.

Returns:
The value associated with the item this iterator points to.

Definition at line 95 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_iter, MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_valid, and MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Self& MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++ (  )  [inline]

Prefix increment operator.

Increment the iterator and set it to the next item in the MultiMap. This either increments the list iterator or the map iterator and sets list_valid accordingly.

Returns:
This iterator after incrementing.

Definition at line 131 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_iter, MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_valid, and MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.

Referenced by MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++().

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Self MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++ ( int   )  [inline]

Postfix increment operator.

Same as prefix increment, but return the previous state.

Parameters:
dummy param to mark postfix.
Returns:
This iterator before incrementing.

Definition at line 156 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++().

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Self& MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator-- (  )  [inline]
template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Self MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator-- ( int   )  [inline]

Postfix decrement operator.

Same as prefix decrement, but return the previous state.

Parameters:
dummy param to mark postfix.
Returns:
This iterator before decrementing.

Definition at line 187 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator--().

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
Tvalue* MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator-> (  )  const [inline]
template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
template<class Tnon_const >
Self& MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator= ( Tnon_const  mi  )  [inline]

Assignment iterator like constructor with the same signature.

Template Parameters:
Tnon_const Iterator type assignable to Tmap_iter (which might be const).
Parameters:
mi One such iterator.
Returns:
This iterator.

Definition at line 83 of file multimap.hpp.

References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_valid, and MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.


Field Documentation

template<class Tmap_iter, class Tlist_iter, class Tkey, class Tvalue, class Tcompare>
bool MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::list_valid [protected]

Flag to show that the iterator has just "walked" a step in the map.

We cannot check the current list for that as we might have reached end() of the map. In that case we'd need to set list_iter to some sort of "invalid" state, but that's impossible as operator== yields undefined behaviour if the iterators don't belong to the same list and there is no list at end(). So if we created a static empty list and an "invalid" iterator in that we could not determine if the iterator is invalid while it's valid. We can also not determine if the map iterator is valid while we don't have the map; so in the end it's easiest to just introduce an extra flag.

Definition at line 47 of file multimap.hpp.

Referenced by MultiMap< Tkey, Tvalue, Tcompare >::erase(), MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::MultiMapIterator(), MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator*(), MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++(), MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator--(), MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator->(), and MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator=().


The documentation for this class was generated from the following file: