Public Types | Public Member Functions

# 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
iterator | 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, iterator > | equal_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 286 of file multimap.hpp.

## Member Function Documentation

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 362 of file multimap.hpp.

Referenced by OrderList::GetBestLoadableNext(), and StationCargoList::ShiftCargo().

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 377 of file multimap.hpp.

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

iterator 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.

Returns:
  Iterator to the element after the deleted one (or invalid).

Definition at line 304 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 StationCargoList::ShiftCargo(), and StationCargoList::Truncate().

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 328 of file multimap.hpp.

Referenced by CargoReroute::operator()().

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 352 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 339 of file multimap.hpp.

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

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

- src/core/multimap.hpp