OpenTTD Source
20241121-master-g67a0fccfad
|
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. More... | |
MultiMapIterator (Tmap_iter mi, Tlist_iter li) | |
Constructor to allow specifying an exact position in map and list. More... | |
template<class Tnon_const > | |
Self & | operator= (Tnon_const mi) |
Assignment iterator like constructor with the same signature. More... | |
Tvalue & | operator* () const |
Dereference operator. More... | |
Tvalue * | operator-> () const |
Same as operator*(), but returns a pointer. More... | |
const Tmap_iter & | GetMapIter () const |
const Tlist_iter & | GetListIter () const |
bool | ListValid () const |
const Tkey & | GetKey () const |
Self & | operator++ () |
Prefix increment operator. More... | |
Self | operator++ (int) |
Postfix increment operator. More... | |
Self & | operator-- () |
Prefix decrement operator. More... | |
Self | operator-- (int) |
Postfix decrement operator. More... | |
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. More... | |
Friends | |
class | MultiMap< Tkey, Tvalue, Tcompare > |
STL-style iterator for MultiMap.
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 25 of file multimap.hpp.
|
inline |
Constructor to allow possibly const iterators to be assigned from possibly non-const map iterators.
You can assign end() like this.
Tnon_const | Iterator type assignable to Tmap_iter (which might be const). |
mi | One such iterator. |
Definition at line 57 of file multimap.hpp.
|
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.
mi | Iterator in the map. |
li | Iterator in the list. |
Definition at line 66 of file multimap.hpp.
|
inline |
Dereference operator.
Works just like usual STL operator*() on various containers. Doesn't do a lot of checks for sanity, just like STL.
Definition at line 90 of file multimap.hpp.
|
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.
Definition at line 122 of file multimap.hpp.
References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.
Referenced by MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++().
|
inline |
Postfix increment operator.
Same as prefix increment, but return the previous state.
dummy | param to mark postfix. |
Definition at line 147 of file multimap.hpp.
References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator++().
|
inline |
Prefix decrement operator.
Decrement the iterator and set it to the previous item in the MultiMap.
Definition at line 159 of file multimap.hpp.
References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::map_iter.
Referenced by MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator--().
|
inline |
Postfix decrement operator.
Same as prefix decrement, but return the previous state.
dummy | param to mark postfix. |
Definition at line 178 of file multimap.hpp.
References MultiMapIterator< Tmap_iter, Tlist_iter, Tkey, Tvalue, Tcompare >::operator--().
|
inline |
Same as operator*(), but returns a pointer.
Definition at line 102 of file multimap.hpp.
|
inline |
Assignment iterator like constructor with the same signature.
Tnon_const | Iterator type assignable to Tmap_iter (which might be const). |
mi | One such iterator. |
Definition at line 78 of file multimap.hpp.
|
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 42 of file multimap.hpp.
Referenced by MultiMap< Tkey, Tvalue, Tcompare >::erase().