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

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

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 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 StationCargoReroute::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