Detailed Description
template<typename KEY, typename VALUE>
class mrpt::utils::bimap< KEY, VALUE >
A bidirectional version of std::map, declared as bimap<KEY,VALUE> and which actually contains two std::map's, one for keys and another for values.
To use this class, insert new pairs KEY<->VALUE with bimap::insert. Then, you can access the KEY->VALUE map with bimap::direct(), and the VALUE->KEY map with bimap::inverse(). The consistency of the two internal maps is assured at any time.
- Note:
- This class can be accessed through iterators to the map KEY->VALUE only.
-
Both typenames KEY and VALUE must be suitable for being employed as keys in a std::map, i.e. they must be comparable through a "< operator".
Definition at line 47 of file bimap.h.
#include <mrpt/utils/bimap.h>
List of all members.
Public Types |
typedef std::map< KEY, VALUE >
::const_iterator | const_iterator |
typedef std::map< KEY, VALUE >
::iterator | iterator |
typedef std::map< VALUE, KEY >
::const_iterator | const_iterator_inverse |
typedef std::map< VALUE, KEY >
::iterator | iterator_inverse |
Public Member Functions |
| bimap () |
| Default constructor - does nothing.
|
const_iterator | begin () const |
iterator | begin () |
const_iterator | end () const |
iterator | end () |
const_iterator_inverse | inverse_begin () const |
iterator_inverse | inverse_begin () |
const_iterator_inverse | inverse_end () const |
iterator_inverse | inverse_end () |
size_t | size () const |
bool | empty () const |
const std::map< KEY, VALUE > & | getDirectMap () const |
| Return a read-only reference to the internal map KEY->VALUES.
|
const std::map< VALUE, KEY > & | getInverseMap () const |
| Return a read-only reference to the internal map KEY->VALUES.
|
void | clear () |
void | insert (const KEY &k, const VALUE &v) |
| Insert a new pair KEY<->VALUE in the bi-map.
|
bool | direct (const KEY &k, VALUE &out_v) const |
| Get the value associated the given key, KEY->VALUE, returning false if not present.
|
bool | hasKey (const KEY &k) const |
| Return true if the given key 'k' is in the bi-map.
|
bool | hasValue (const VALUE &v) const |
| Return true if the given value 'v' is in the bi-map.
|
VALUE | direct (const KEY &k) const |
| Get the value associated the given key, KEY->VALUE, raising an exception if not present.
|
bool | inverse (const VALUE &v, KEY &out_k) const |
| Get the key associated the given value, VALUE->KEY, returning false if not present.
|
KEY | inverse (const VALUE &v) const |
| Get the key associated the given value, VALUE->KEY, raising an exception if not present.
|
const_iterator | find_key (const KEY &k) const |
iterator | find_key (const KEY &k) |
const_iterator_inverse | find_value (const VALUE &v) const |
iterator_inverse | find_value (const VALUE &v) |
Private Attributes |
std::map< KEY, VALUE > | m_k2v |
std::map< VALUE, KEY > | m_v2k |
Member Typedef Documentation
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
Constructor & Destructor Documentation
template<typename KEY, typename VALUE>
Default constructor - does nothing.
Definition at line 61 of file bimap.h.
Member Function Documentation
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
Get the value associated the given key, KEY->VALUE, raising an exception if not present.
- See also:
- inverse, hasKey, hasValue
- Exceptions:
-
| std::exception | On key not present in the bi-map. |
Definition at line 119 of file bimap.h.
template<typename KEY, typename VALUE>
bool mrpt::utils::bimap< KEY, VALUE >::direct |
( |
const KEY & |
k, |
|
|
VALUE & |
out_v | |
|
) |
| | const [inline] |
Get the value associated the given key, KEY->VALUE, returning false if not present.
- See also:
- inverse, hasKey, hasValue
- Returns:
- false on key not found.
Definition at line 98 of file bimap.h.
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
const std::map<KEY,VALUE>& mrpt::utils::bimap< KEY, VALUE >::getDirectMap |
( |
|
) |
const [inline] |
Return a read-only reference to the internal map KEY->VALUES.
Definition at line 77 of file bimap.h.
template<typename KEY, typename VALUE>
const std::map<VALUE,KEY>& mrpt::utils::bimap< KEY, VALUE >::getInverseMap |
( |
|
) |
const [inline] |
Return a read-only reference to the internal map KEY->VALUES.
Definition at line 79 of file bimap.h.
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
bool mrpt::utils::bimap< KEY, VALUE >::inverse |
( |
const VALUE & |
v, |
|
|
KEY & |
out_k | |
|
) |
| | const [inline] |
Get the key associated the given value, VALUE->KEY, returning false if not present.
- See also:
- direct, hasKey, hasValue
- Returns:
- false on value not found.
Definition at line 130 of file bimap.h.
template<typename KEY, typename VALUE>
Get the key associated the given value, VALUE->KEY, raising an exception if not present.
- See also:
- direct, hasKey, hasValue
- Returns:
- false on value not found.
Definition at line 142 of file bimap.h.
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
template<typename KEY, typename VALUE>
Member Data Documentation
template<typename KEY, typename VALUE>
Definition at line 50 of file bimap.h.
Referenced by mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::begin(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::clear(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::direct(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::empty(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::end(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::find_key(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::getDirectMap(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::hasKey(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::insert(), and mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::size().
template<typename KEY, typename VALUE>
Definition at line 51 of file bimap.h.
Referenced by mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::clear(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::find_value(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::getInverseMap(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::hasValue(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::insert(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::inverse(), mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::inverse_begin(), and mrpt::utils::bimap< CLandmark::TLandmarkID, unsigned int >::inverse_end().