MultiMap< Tkey, Tvalue, Tcompare > Class Template Reference

Hand-rolled multimap as map of lists. More...

#include <multimap.hpp>

Public Types

typedef std::list< Tvalue > List
typedef List::iterator ListIterator
typedef List::const_iterator ConstListIterator
typedef std::map< Tkey, List,
Tcompare > 
Map
typedef Map::iterator MapIterator
typedef Map::const_iterator ConstMapIterator
typedef MultiMapIterator
< MapIterator, ListIterator,
Tkey, Tvalue, Tcompare > 
iterator
typedef MultiMapIterator
< ConstMapIterator,
ConstListIterator, Tkey, const
Tvalue, Tcompare > 
const_iterator

Public Member Functions

void erase (iterator it)
 Erase the value pointed to by an iterator.
void Insert (const Tkey &key, const Tvalue &val)
 Insert a value at the end of the range with the specified key.
size_t size () const
 Count all items in this MultiMap.
size_t MapSize () const
 Count the number of ranges with equal keys in this MultiMap.
std::pair< iterator, iteratorequal_range (const Tkey &key)
 Get a pair of iterators specifying a range of items with equal keys.
std::pair< const_iterator,
const_iterator
equal_range (const Tkey &key) const
 Get a pair of constant iterators specifying a range of items with equal keys.

Detailed Description

template<typename Tkey, typename Tvalue, typename Tcompare = std::less<Tkey>>
class MultiMap< Tkey, Tvalue, Tcompare >

Hand-rolled multimap as map of lists.

Behaves mostly like a list, but is sorted by Tkey so that you can easily look up ranges of equal keys. Those ranges are internally ordered in a deterministic way (contrary to STL multimap). All STL-compatible members are named in STL style, all others are named in OpenTTD style.

Definition at line 296 of file multimap.hpp.


Member Function Documentation

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
std::pair<const_iterator, const_iterator> MultiMap< Tkey, Tvalue, Tcompare >::equal_range ( const Tkey &  key  )  const [inline]

Get a pair of constant iterators specifying a range of items with equal keys.

Parameters:
key Key to look for.
Returns:
Constant range of items with given key.

Definition at line 381 of file multimap.hpp.

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
std::pair<iterator, iterator> MultiMap< Tkey, Tvalue, Tcompare >::equal_range ( const Tkey &  key  )  [inline]

Get a pair of iterators specifying a range of items with equal keys.

Parameters:
key Key to look for.
Returns:
Range of items with given key.

Definition at line 365 of file multimap.hpp.

Referenced by OrderList::GetBestLoadableNext(), StationCargoList::MoveTo(), and StationCargoList::RerouteStalePackets().

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
void MultiMap< Tkey, Tvalue, Tcompare >::erase ( iterator  it  )  [inline]

Erase the value pointed to by an iterator.

The iterator may be invalid afterwards.

Parameters:
it Iterator pointing at some value.

Definition at line 313 of file multimap.hpp.

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

Referenced by StationCargoList::CountAndTruncate(), and StationCargoList::RerouteStalePackets().

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
void MultiMap< Tkey, Tvalue, Tcompare >::Insert ( const Tkey &  key,
const Tvalue &  val 
) [inline]

Insert a value at the end of the range with the specified key.

Parameters:
key Key to be inserted at.
val Value to be inserted.

Definition at line 331 of file multimap.hpp.

Referenced by StationCargoList::RerouteStalePackets().

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
size_t MultiMap< Tkey, Tvalue, Tcompare >::MapSize (  )  const [inline]

Count the number of ranges with equal keys in this MultiMap.

Returns:
Number of ranges with equal keys.

Definition at line 355 of file multimap.hpp.

References MultiMap< Tkey, Tvalue, Tcompare >::size().

template<typename Tkey , typename Tvalue , typename Tcompare = std::less<Tkey>>
size_t MultiMap< Tkey, Tvalue, Tcompare >::size (  )  const [inline]

Count all items in this MultiMap.

This involves iterating over the map.

Returns:
Number of items in the MultiMap.

Definition at line 342 of file multimap.hpp.

Referenced by MultiMap< Tkey, Tvalue, Tcompare >::MapSize().


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

Generated on Fri May 27 04:20:50 2011 for OpenTTD by  doxygen 1.6.1