Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

template<class, class, class, class>
class Geo::GeoMap

    └>_Alloc

Our implementation of an STL map, with some modifications.

  • The class is defined as NonCopyable (so no copy constructor or assignment operator). Required as you cannot report out-of-memory in these functions.

  • No operator[]. Bit of a shame this, but we cannot have an insert operation that can fail and have the function return a reference.

  • The iterator that insert (of various flavours) returns will be equal to GeoMap::end() if the insert operation fails. It is the user's responsibility to check this before using it.

  • Added a new overload of insert to reduce typing (see below)

  • No changes to allocator policy, just created a simple allocator that passes through GEO_MALLOC and GEO_FREE. Can be switched to Geo::GeoFixedPoolAllocator.

Classes

NameDescription
Geo::GeoMap::const_iterator

Iterator for nonmutable GeoMap.

Geo::GeoMap::iterator

Iterator for mutable GeoMap.

Typedefs

NameDescription
allocator_type::difference_type _DiffType

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoMap< _Kty, _Ty, _Pr, _Alloc > _Myt

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoPair< const_iterator, const_iterator > _Paircc

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoPair< iterator, bool > _Pairib

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoPair< iterator, iterator > _Pairii

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

allocator_type::pointer _PtrType

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

allocator_type::reference _RefType

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_Alloc allocator_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

allocator_type::const_pointer const_pointer

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

allocator_type::const_reference const_reference

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

std::reverse_iterator< const_iterator > const_reverse_iterator

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_DiffType difference_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_Pr key_compare

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_Kty key_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_Ty mapped_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_PtrType pointer

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

_RefType reference

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

std::reverse_iterator< iterator > reverse_iterator

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

allocator_type::size_type size_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoPair< const _Kty, _Ty > value_type

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

Friends

NameDescription
friend class const_iterator

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

friend class iterator

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

Variables

NameDescription
const size_t max_allocation_size = sizeof(_Node)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

Functions

NameDescription
~GeoMap()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

begin()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

begin()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

clear()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

count(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

empty()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

end()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

end()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

equal_range(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

equal_range(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

erase(const_iterator, const_iterator)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

erase(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

erase(const key_type *, const key_type *)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

erase(const_iterator)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

find(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

find(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoMap()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoMap(const key_compare &, const allocator_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoMap(const allocator_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

GeoMap(const key_compare &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

get_allocator()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

insert(InputIt, InputIt)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

insert(const key_type &, const mapped_type &)

One addition to the STL standard is the addition of an insert(key, value) function.

insert(const value_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

insert(const_iterator, const value_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

key_comp()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

lower_bound(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

lower_bound(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

max_size()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

NonCopyable(NonCopyable &&)

Defaulted to allow move.

operator=(NonCopyable &&)

Defaulted to allow move.

rbegin()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

rbegin()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

rend()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

rend()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

size()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

swap(_Myt &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

upper_bound(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

upper_bound(const key_type &)

All functions and typedefs match those required by the C++0x standard (except where documented at class level).

value_comp()

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a96ebedcf949e5c1162f2fb8388a8032f
a96ebedcf949e5c1162f2fb8388a8032f

Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::~GeoMap

...

public: ~GeoMap()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
aad4955fee330500abfa8dc74ff4a892e
aad4955fee330500abfa8dc74ff4a892e

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::begin

...

public: iterator begin()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
aee99401aff30649bbb9e3e9c63c3527d
aee99401aff30649bbb9e3e9c63c3527d

const_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::begin

...

public: const_iterator begin() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a0409456860bd0a1f758d7d3bf44d15d9
a0409456860bd0a1f758d7d3bf44d15d9

void Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::clear

...

public: void clear()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a743bbb5882194dff836ad7e0aea053c9
a743bbb5882194dff836ad7e0aea053c9

size_type Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::count

...

public: size_type count
(
    const key_type & _Keyval
) const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ad2f6966a15c75a820f6e021289cb7645
ad2f6966a15c75a820f6e021289cb7645

bool Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::empty

...

public: bool empty() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
af7fd7a6dcfd7a755104c98dcb2c8a37a
af7fd7a6dcfd7a755104c98dcb2c8a37a

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::end

...

public: iterator end()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ab69eef23878d403595121205e3035d45
ab69eef23878d403595121205e3035d45

const_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::end

...

public: const_iterator end() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
afe05448e02e7bc53577944dac3e3bdf4
afe05448e02e7bc53577944dac3e3bdf4

_Pairii Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::equal_range

...

public: _Pairii equal_range
(
    const key_type & _Keyval
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a2221b23e216af91a7c1e2a7c0bb829a1
a2221b23e216af91a7c1e2a7c0bb829a1

_Paircc Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::equal_range

...

public: _Paircc equal_range
(
    const key_type & _Keyval
) const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a2f648b0b2e70f40f497d3923efc7a58e
a2f648b0b2e70f40f497d3923efc7a58e

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::erase

...

public: iterator erase
(
    const_iterator _First,
    const_iterator _Last
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
aad244a34f22567e39ee7913858e0154c
aad244a34f22567e39ee7913858e0154c

size_type Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::erase

...

public: size_type erase
(
    const key_type & _Keyval
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
acf8f23b3da197b3cefceb185e96a7959
acf8f23b3da197b3cefceb185e96a7959

void Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::erase

...

public: void erase
(
    const key_type * _First,
    const key_type * _Last
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
afac48536a8690837e86647c3273c8f29
afac48536a8690837e86647c3273c8f29

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::erase

...

public: iterator erase
(
    const_iterator _Where
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a4c28ae443a0b56b3c05483dab82e8bb5
a4c28ae443a0b56b3c05483dab82e8bb5

const_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::find

...

public: const_iterator find
(
    const key_type & _Keyval
) const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
affa0bb97ecaa009a08eecb898f9f7b4b
affa0bb97ecaa009a08eecb898f9f7b4b

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::find

...

public: iterator find
(
    const key_type & _Keyval
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
aba8b56b34ccd2d62b467108a7a2352bb
aba8b56b34ccd2d62b467108a7a2352bb

Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::GeoMap

...

public: GeoMap()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a6bc439b522a568681502791852bb221c
a6bc439b522a568681502791852bb221c

Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::GeoMap

...

public: GeoMap
(
    const key_compare & _Pred,
    const allocator_type & _Al
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a26b226027ffe5f6b543ec897c922521f
a26b226027ffe5f6b543ec897c922521f

Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::GeoMap

...

public: GeoMap
(
    const allocator_type & _Al
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a1c9b2a19459654a87f795feb5cabdb3b
a1c9b2a19459654a87f795feb5cabdb3b

Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::GeoMap

...

public: GeoMap
(
    const key_compare & _Pred
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a614aecca65e9010c07ede5b14a947e5d
a614aecca65e9010c07ede5b14a947e5d

allocator_type Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::get_allocator

...

public: allocator_type get_allocator() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a2fe2a4be841f246a8d4f839730a47643
a2fe2a4be841f246a8d4f839730a47643

bool Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::insert

...

public: bool insert
(
    InputIt first,
    InputIt last
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ad4da71645f1096fc2c4823e321c2577d
ad4da71645f1096fc2c4823e321c2577d

_Pairib Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::insert

...

public: _Pairib insert
(
    const key_type & key,
    const mapped_type & val
)

...

One addition to the STL standard is the addition of an insert(key, value) function.

This would usually be available as operator[], but without exception handling enabled we would have no way to detect a failure in the standard function. Therefore it was considered better to add a new function overload than to change the behaviour of an existing function.


Anchor
a42bc88d4e1f2e7645c34abb36ea20c8e
a42bc88d4e1f2e7645c34abb36ea20c8e

_Pairib Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::insert

...

public: _Pairib insert
(
    const value_type & val
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
afec9f567729ae57c240714e61d2946ae
afec9f567729ae57c240714e61d2946ae

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::insert

...

public: iterator insert
(
    const_iterator hint,
    const value_type & val
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
af8d640e8170ab6267cde024600b79c02
af8d640e8170ab6267cde024600b79c02

key_compare Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::key_comp

...

public: key_compare key_comp() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ae05e6b1e40905dfdf23de5406fbe79d5
ae05e6b1e40905dfdf23de5406fbe79d5

const_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::lower_bound

...

public: const_iterator lower_bound
(
    const key_type & _Keyval
) const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ace33c6ce7befd820ac6932042857128a
ace33c6ce7befd820ac6932042857128a

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::lower_bound

...

public: iterator lower_bound
(
    const key_type & _Keyval
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
af00c2a53f81a3a0f977e52b7e6f11842
af00c2a53f81a3a0f977e52b7e6f11842

size_type Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::max_size

...

public: size_type max_size() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
adaed81b4c59f263dcb4e78c4126f4683
adaed81b4c59f263dcb4e78c4126f4683

Geo::NonCopyable::NonCopyable

...

public: NonCopyable
(
    NonCopyable &&
)

...

Defaulted to allow move.


Anchor
a6abc781e23b8f4864e0b868806e0acbf
a6abc781e23b8f4864e0b868806e0acbf

NonCopyable& Geo::NonCopyable::operator=

...

public: NonCopyable & operator=
(
    NonCopyable &&
)

...

Defaulted to allow move.


Anchor
a6a1698b31b76319592503a149c573cd8
a6a1698b31b76319592503a149c573cd8

const_reverse_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::rbegin

...

public: const_reverse_iterator rbegin() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ab5e66f52090108ac9ffc2f2e3adcc62a
ab5e66f52090108ac9ffc2f2e3adcc62a

reverse_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::rbegin

...

public: reverse_iterator rbegin()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a6722d4119b18bc24ee43c5887ab7bd68
a6722d4119b18bc24ee43c5887ab7bd68

const_reverse_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::rend

...

public: const_reverse_iterator rend() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a76f7a4f12b03c8e1cc8a4af5ecc03da9
a76f7a4f12b03c8e1cc8a4af5ecc03da9

reverse_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::rend

...

public: reverse_iterator rend()

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a7519422e9c6144964811622b6e0eaa3f
a7519422e9c6144964811622b6e0eaa3f

size_type Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::size

...

public: size_type size() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a1a5f7941c10491a106f1de56a716c7ae
a1a5f7941c10491a106f1de56a716c7ae

void Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::swap

...

public: void swap
(
    _Myt & rhs
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a7926c2ef6578899b31e468a51d9505b3
a7926c2ef6578899b31e468a51d9505b3

iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::upper_bound

...

public: iterator upper_bound
(
    const key_type & _Keyval
)

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
ad2e5963f25adfd07893619a5a2a71c25
ad2e5963f25adfd07893619a5a2a71c25

const_iterator Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::upper_bound

...

public: const_iterator upper_bound
(
    const key_type & _Keyval
) const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).


Anchor
a9a11de11c78f2fe64220e5c0ab6f39d3
a9a11de11c78f2fe64220e5c0ab6f39d3

value_compare Geo::GeoMap< _Kty, _Ty, _Pr, _Alloc >::value_comp

...

public: value_compare value_comp() const

...

All functions and typedefs match those required by the C++0x standard (except where documented at class level).