OpenTTD Source: MultiMap< Tkey, Tvalue, Tcompare > Class Template Reference

OpenTTD Source 12.2

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. More...
void | Insert (const Tkey &key, const Tvalue &val)
| Insert a value at the end of the range with the specified key. More...
size_t | size () const
| Count all items in this MultiMap. More...
size_t | MapSize () const
| Count the number of ranges with equal keys in this MultiMap. More...
std::pair< iterator, iterator > | equal_range (const Tkey &key)
| Get a pair of iterators specifying a range of items with equal keys. More...
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. More...

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

## Member Function Documentation

## ◆ equal_range() [1/2]

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

Referenced by StationCargoList::ShiftCargo().

## ◆ equal_range() [2/2]

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

## ◆ erase()

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 302 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().

## ◆ Insert()

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

Referenced by StationCargoReroute::operator()().

## ◆ MapSize()

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

## ◆ 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 337 of file multimap.hpp.

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

- src/core/multimap.hpp