| 
    MRPT
    2.0.0
    
   | 
 
A STL-like container which looks and behaves (almost exactly) like a std::map<> but is implemented as a linear std::vector<> indexed by KEY.
Note that KEY must be integer types only (size_t, uint32_t, etc.) This implementation is much more efficient than std::map<> when the most common operation is accesing elements by KEY with find() or [], and the range of KEY values starts at 0 (or a reasonable low number).
This container is internally implemented as a linear array (std::vector) of the same fundamental type than the equivalent std::map<K,V>, that is, elements are  std::pair<K,V>  (note that K is NOT const as in std::map). I know, I know... this implementation wastes a lot of useless key elements in the pair.first when indices are already implicit in the std::vector<> order... but I promise I'll pay a beer to whoever show me an efficient alternative. If failed, update this comment: COUNTER OF WASTED HOURS WITH THIS: 3h
Note that there is one fundamental difference wrt std::map<>: if you start with an empty map_as_vector<> and insert one element at the i'th position (with either [] or insert), the elements [0,i-1] will also exist then, but both their first & second entries (for the corresponding std::pair) will be undefined. This was intentional in order to gain efficiency (in particular, each std::pair<> doesn't have a constructor when resizing the underlying std::vector).
The default underlying non-associative container is a "memory-aligned std::vector<>", but it can be changed to a standard vector<> or to a deque<> (to avoid memory reallocations) by changing the template parameter VECTOR_T.
Definition at line 55 of file map_as_vector.h.
#include <mrpt/containers/map_as_vector.h>
Public Member Functions | |
Constructors, read/write access and other operations  | |
| map_as_vector ()=default | |
| < Default constructor - does nothing */  More... | |
| map_as_vector (const map_as_vector< KEY, VALUE > &o) | |
| Copy constructor.  More... | |
| size_t | size () const | 
| bool | empty () const | 
| size_type | count (const key_type i) const | 
| Count how many entries have a given key value - unlike std::map<K,V>, recall that this class will say an element i<N-1 exists just due to an insertion of element at N.  More... | |
| size_type | max_size () const | 
| Maximum size due to system limits.  More... | |
| const vec_t & | getVector () const | 
| Return a read-only reference to the internal vector.  More... | |
| void | clear () | 
| Clear the contents of this container.  More... | |
| void | swap (map_as_vector< KEY, VALUE > &o) | 
| Efficient swap with another object.  More... | |
| VALUE & | operator[] (const size_t i) | 
| Write/read via [i] operator, that creates all elements up to (and including) the i'th if they didn't exist already.  More... | |
| void | insert (const iterator &guess_point, const value_type &keyvalpair) | 
| Insert pair<key,val>, as in std::map (guess_point is actually ignored in this class)  More... | |
| void | insert (const value_type &keyvalpair) | 
| Insert pair<key,val>, as in std::map.  More... | |
| iterator | find (const size_t i) | 
| Constant-time find, returning an iterator to the <key,val> pair or to end() if not found (that is, if it's above the maximum index in the vector)  More... | |
| const_iterator | find (const size_t i) const | 
| Constant-time find, returning an iterator to the <key,val> pair or to end() if not found (that is, if it's above the maximum index in the vector)  More... | |
Private Attributes | |
| vec_t | m_vec | 
| The actual container.  More... | |
Iterators stuff and other types | |
| using | key_type = KEY | 
| using | value_type = std::pair< KEY, VALUE > | 
| using | vec_t = VECTOR_T | 
| using | size_type = typename vec_t::size_type | 
| using | iterator = typename vec_t::iterator | 
| using | const_iterator = typename vec_t::const_iterator | 
| using | reverse_iterator = std::reverse_iterator< iterator > | 
| using | const_reverse_iterator = std::reverse_iterator< const_iterator > | 
| iterator | begin () | 
| iterator | end () | 
| const_iterator | begin () const | 
| const_iterator | end () const | 
| reverse_iterator | rbegin () | 
| const_reverse_iterator | rbegin () const | 
| reverse_iterator | rend () | 
| const_reverse_iterator | rend () const | 
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::const_iterator = typename vec_t::const_iterator | 
Definition at line 65 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::const_reverse_iterator = std::reverse_iterator<const_iterator> | 
Definition at line 67 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::iterator = typename vec_t::iterator | 
Definition at line 64 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::key_type = KEY | 
Definition at line 60 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::reverse_iterator = std::reverse_iterator<iterator> | 
Definition at line 66 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::size_type = typename vec_t::size_type | 
Definition at line 63 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::value_type = std::pair<KEY, VALUE> | 
Definition at line 61 of file map_as_vector.h.
| using mrpt::containers::map_as_vector< KEY, VALUE, VECTOR_T >::vec_t = VECTOR_T | 
Definition at line 62 of file map_as_vector.h.
      
  | 
  inlinedefault | 
< Default constructor - does nothing */
      
  | 
  inline | 
Copy constructor.
Definition at line 94 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 69 of file map_as_vector.h.
Referenced by mrpt::containers::map_as_vector< size_t, size_t >::rend().
      
  | 
  inline | 
Definition at line 71 of file map_as_vector.h.
      
  | 
  inline | 
Clear the contents of this container.
Definition at line 110 of file map_as_vector.h.
Referenced by mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::clearAll().
      
  | 
  inline | 
Count how many entries have a given key value - unlike std::map<K,V>, recall that this class will say an element i<N-1 exists just due to an insertion of element at N.
Definition at line 100 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 96 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 70 of file map_as_vector.h.
Referenced by mrpt::containers::map_as_vector< size_t, size_t >::rbegin().
      
  | 
  inline | 
Definition at line 72 of file map_as_vector.h.
      
  | 
  inline | 
Constant-time find, returning an iterator to the <key,val> pair or to end() if not found (that is, if it's above the maximum index in the vector)
Definition at line 138 of file map_as_vector.h.
      
  | 
  inline | 
Constant-time find, returning an iterator to the <key,val> pair or to end() if not found (that is, if it's above the maximum index in the vector)
Definition at line 148 of file map_as_vector.h.
      
  | 
  inline | 
Return a read-only reference to the internal vector.
Definition at line 108 of file map_as_vector.h.
      
  | 
  inline | 
Insert pair<key,val>, as in std::map (guess_point is actually ignored in this class)
Definition at line 124 of file map_as_vector.h.
      
  | 
  inline | 
Insert pair<key,val>, as in std::map.
Definition at line 130 of file map_as_vector.h.
      
  | 
  inline | 
Maximum size due to system limits.
Definition at line 106 of file map_as_vector.h.
      
  | 
  inline | 
Write/read via [i] operator, that creates all elements up to (and including) the i'th if they didn't exist already.
Definition at line 115 of file map_as_vector.h.
Referenced by mrpt::containers::map_as_vector< size_t, size_t >::insert().
      
  | 
  inline | 
Definition at line 73 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 74 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 78 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 79 of file map_as_vector.h.
      
  | 
  inline | 
Definition at line 95 of file map_as_vector.h.
      
  | 
  inline | 
Efficient swap with another object.
Definition at line 112 of file map_as_vector.h.
      
  | 
  private | 
The actual container.
Definition at line 86 of file map_as_vector.h.
Referenced by mrpt::containers::map_as_vector< size_t, size_t >::begin(), mrpt::containers::map_as_vector< size_t, size_t >::clear(), mrpt::containers::map_as_vector< size_t, size_t >::count(), mrpt::containers::map_as_vector< size_t, size_t >::empty(), mrpt::containers::map_as_vector< size_t, size_t >::end(), mrpt::containers::map_as_vector< size_t, size_t >::find(), mrpt::containers::map_as_vector< size_t, size_t >::getVector(), mrpt::containers::map_as_vector< size_t, size_t >::max_size(), mrpt::containers::map_as_vector< size_t, size_t >::operator[](), mrpt::containers::map_as_vector< size_t, size_t >::size(), and mrpt::containers::map_as_vector< size_t, size_t >::swap().
| Page generated by Doxygen 1.8.14 for MRPT 2.0.0 Git: b38439d21 Tue Mar 31 19:58:06 2020 +0200 at miƩ abr 1 00:50:30 CEST 2020 |