The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > Class Template Reference

A bit modified version of 'Loki::AssocVector' associative vector from Loki library by Andrei Alexandrescu. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/VectorMap.h>

Inheritance diagram for GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >:
Collaboration diagram for GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >:

Classes

struct  _compare_type
 The actual structure used to compare the elements Only "key" is important for comparison. More...
 

Public Types

typedef KEY key_type
 the actual type of key
 
typedef VALUE mapped_type
 the actual type of value
 
typedef KEYCOMPARE key_compare
 comparison of keys
 
typedef std::pair< key_type, mapped_typevalue_type
 the actual storage item
 
typedef ALLOCATOR allocator_type
 allocator (could be useful for optimizations)
 
typedef ALLOCATOR::value_type const & reference
 the types to conform STL
 
typedef ALLOCATOR::value_type const & const_reference
 the types to conform STL
 
typedef ALLOCATOR::size_type size_type
 the types to conform STL
 
typedef ALLOCATOR::difference_type difference_type
 the types to conform STL
 
typedef std::vector< value_type, allocator_type_vector
 the actual storage container (no export)
 
typedef _vector::const_iterator iterator
 visible const_iterator (exported)
 
typedef _vector::const_iterator const_iterator
 visible const_iterator (exported)
 
typedef std::reverse_iterator< iteratorreverse_iterator
 visible reverse const_iterator (exported)
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 visible reverse const_iterator (exported)
 
typedef std::pair< iterator, iteratoriterators
 visible iterator pait
 
typedef std::pair< iterator, bool > result_type
 visible iterator pait
 
typedef _compare_type compare_type
 the actual comparison criteria for valye_type objects
 

Public Member Functions

iterator begin () const
 "begin" iterator for sequential access (const-only version!)
 
iterator end () const
 "end" iterator for sequential access (const-only version!)
 
reverse_iterator rbegin () const
 "rbegin" iterator for sequential access (const-only version!)
 
reverse_iterator rend () const
 "rend" iterator for sequential access (const-only version!)
 
void erase (iterator pos)
 erase the element using the iterator
 
size_type erase (const key_type &key)
 erase the element using the key
 
size_type erase (iterator first, iterator last)
 erase the sequence of elements using the iterators
 
template<class TYPE>
size_type erase (TYPE first, TYPE last)
 erase the sequence of elements using the sequence of keys
 
result_type insert (const key_type &key, const mapped_type &mapped)
 insert the (key,value) pair into the container
 
result_type insert (const value_type &value)
 insert the (key,value) pair into the container
 
result_type insert (iterator pos, const value_type &value)
 insert the element with some guess about its new position With the right guess the method could be more efficient
 
result_type insert (iterator pos, const key_type &key, const mapped_type &mapped)
 insert the (key,value) pair into the container With the right guess the method could be more efficient
 
template<class PAIRS>
void insert (PAIRS first, PAIRS last)
 insert the sequence of elements into the container
 
template<class KEYS, class VALUES>
void insert (KEYS kf, KEYS kl, VALUES vf)
 insert into the container the elements from 2 "parallel" sequences
 
iterator find (const key_type &key) const
 find the element by key
 
size_type count (const key_type &key) const
 count number of elements with the certain key
 
iterator lower_bound (const key_type &key) const
 
iterator upper_bound (const key_type &key) const
 
iterators equal_range (const key_type &key) const
 
bool empty () const
 empty container ?
 
size_type size () const
 number of elements
 
size_type max_size () const
 maximal allowed size
 
void clear ()
 clear the container
 
void reserve (size_type num)
 reserve the space in the container for at least 'num' elements
 
void swap (VectorMap &other)
 swap function, which 'swaps' the content of two containers
 
bool operator== (const VectorMap &other) const
 comparison criteria for containers
 
bool operator< (const VectorMap &other) const
 comparison criteria for containers
 
bool update (const key_type &key, const mapped_type &mapped)
 forced insertion of the key/mapped pair The method acts like "insert" but it DOES overwrite the existing mapped value.
 
bool update (const value_type &val)
 forced insertion of the key/mapped pair The method acts like "insert" but it DOES overwrite the mapped value.
 
const mapped_typeoperator() (const key_type &key) const
 access to element by key (const version) there is no container increment for missing keys
 
const mapped_typeoperator[] (const key_type &key) const
 access to element by key (const version) there is no container increment for missing keys
 
const mapped_typeat (const key_type &key) const
 checked access to elements by key throw std::out_of_range exception for non-existing keys
 
 VectorMap (const allocator_type &alloc=allocator_type())
 default constructor from the the allocator
 
template<class INPUT>
 VectorMap (INPUT first, INPUT last, const allocator_type &alloc=allocator_type())
 templated constructor from "convertible" sequence
 
 VectorMap (std::initializer_list< value_type > first, const allocator_type &alloc=allocator_type())
 tconstructor from initializer list
 
const compare_typecompare () const
 get the comparison criteria itself
 
const key_comparecompare_key () const
 get the comparison criteria for keys
 
VectorMapmerge (const VectorMap &right)
 merge two maps
 
template<class K1, class K2, class K3, class K4>
VectorMapmerge (const VectorMap< K1, K2, K3, K4 > &right)
 merge two maps
 
const key_typekey_at (const size_t index) const
 useful method for python decoration:
 
const mapped_typevalue_at (const size_t index) const
 useful method for python decoration:
 
- Public Member Functions inherited from Gaudi::Utils::MapBase
virtual ~MapBase ()
 

Protected Types

typedef _vector::iterator _iterator
 the regular iterator (no export)
 

Protected Member Functions

template<class TYPE1, class TYPE2>
bool compare (const TYPE1 &obj1, const TYPE2 &obj2) const
 compare the objects using the comaprison criteria
 
_iterator lower_bound (const key_type &key)
 'lower-bound' - non-const version
 
_iterator iter (iterator p)
 the conversion from 'const' to 'non-const' iterator
 
iterator iter (_iterator p)
 the conversion from 'non-const' to 'const' iterator
 
- Protected Member Functions inherited from Gaudi::Utils::MapBase
void throw_out_of_range_exception () const
 throw std::out_of_range exception
 

Private Attributes

_vector m_vct
 the underlying sorted vector of (key,mapped) pairs
 

Friends

bool operator> (const VectorMap &left, const VectorMap &right)
 
bool operator!= (const VectorMap &left, const VectorMap &right)
 
bool operator>= (const VectorMap &left, const VectorMap &right)
 
bool operator<= (const VectorMap &left, const VectorMap &right)
 
std::ostream & operator<< (std::ostream &str, const VectorMap &)
 printout to ostream - not implemented
 

Detailed Description

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
class GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >

A bit modified version of 'Loki::AssocVector' associative vector from Loki library by Andrei Alexandrescu.

The number of "non-const" operations is reduced, e.g. all non-const iterators are not exported, therefore it is almost impossible e.g. externally re-sort the underlying sorted container.


The nominal CPU performance:

Container insertion: O(N) Container look-up: O(log(N)) (a'la std::map, but a bit faster)

It could be used as a "light" and good alternative for std::map associative container, in the case of relatively rare insertion and frequent look-up.

Due to helper base class Gaudi::Utils::MapBase, this class is "python-friendly", and one can perform all python manipulaitons in intuitive way:

>>> m = ... ## get the map
>>> print m ## print the map a'la python class dict
...
>>> for key in m : print key, m[key] ## iteration over the map
...
>>> for key,value in m.iteritems() : print key, value
...
>>> keys = m.keys() ## get the list of keys
>>> values = m.values () ## get the list of values
>> items = m.items () ## get the list of items
>>> if 'one' in m ## check the presence of the key in map
>>> v = m.get(key', None) ## return m[key] for existing key, else None
>>> del m[key] ## erase the key form the map
>>> value m[key] ## unchecked access through the key
...
>>> m.update( key, value ) ## update/insert key/value pair
void erase(iterator pos)
erase the element using the iterator
Definition VectorMap.h:184
bool update(const key_type &key, const mapped_type &mapped)
forced insertion of the key/mapped pair The method acts like "insert" but it DOES overwrite the exist...
Definition VectorMap.h:480
result_type insert(const key_type &key, const mapped_type &mapped)
insert the (key,value) pair into the container
Definition VectorMap.h:283
Attention
The syntax can be drastically simplified, if one redefines the setitem attribute:
>>> type(m).__setitem__ = Gaudi.Utils.MapBase.__setitem__
>>> m[key] = value ## much more intuitive semantics for key insertion
Helper base-class to allow the generic Python-decoration for all "map-like" classes in Gaudi.
Definition MapBase.h:45
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition __init__.py:1

In a similar way getitem and delitem methods can be redefind

To avoid the unnesessary expansion of dictionaries it is highly recommended to exclude from dictionary the following methods:

  • lower_bound
  • upper_bound
  • equal_range
  • insert
See also
Gaudi::Utils::MapBase
Author
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr
Date
2005-07-23

Definition at line 100 of file VectorMap.h.

Member Typedef Documentation

◆ _iterator

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef _vector::iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::_iterator
protected

the regular iterator (no export)

Definition at line 129 of file VectorMap.h.

◆ _vector

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::vector<value_type, allocator_type> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::_vector

the actual storage container (no export)

Definition at line 125 of file VectorMap.h.

◆ allocator_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef ALLOCATOR GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::allocator_type

allocator (could be useful for optimizations)

Definition at line 113 of file VectorMap.h.

◆ compare_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef _compare_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::compare_type

the actual comparison criteria for valye_type objects

Definition at line 168 of file VectorMap.h.

◆ const_iterator

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef _vector::const_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::const_iterator

visible const_iterator (exported)

Definition at line 135 of file VectorMap.h.

◆ const_reference

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef ALLOCATOR::value_type const& GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::const_reference

the types to conform STL

Definition at line 117 of file VectorMap.h.

◆ const_reverse_iterator

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::reverse_iterator<const_iterator> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::const_reverse_iterator

visible reverse const_iterator (exported)

Definition at line 139 of file VectorMap.h.

◆ difference_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef ALLOCATOR::difference_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::difference_type

the types to conform STL

Definition at line 121 of file VectorMap.h.

◆ iterator

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef _vector::const_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::iterator

visible const_iterator (exported)

Definition at line 133 of file VectorMap.h.

◆ iterators

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::pair<iterator, iterator> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::iterators

visible iterator pait

Definition at line 141 of file VectorMap.h.

◆ key_compare

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef KEYCOMPARE GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::key_compare

comparison of keys

Definition at line 107 of file VectorMap.h.

◆ key_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef KEY GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::key_type

the actual type of key

Definition at line 103 of file VectorMap.h.

◆ mapped_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef VALUE GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::mapped_type

the actual type of value

Definition at line 105 of file VectorMap.h.

◆ reference

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef ALLOCATOR::value_type const& GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::reference

the types to conform STL

Definition at line 115 of file VectorMap.h.

◆ result_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::pair<iterator, bool> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::result_type

visible iterator pait

Definition at line 143 of file VectorMap.h.

◆ reverse_iterator

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::reverse_iterator<iterator> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::reverse_iterator

visible reverse const_iterator (exported)

Definition at line 137 of file VectorMap.h.

◆ size_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef ALLOCATOR::size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::size_type

the types to conform STL

Definition at line 119 of file VectorMap.h.

◆ value_type

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
typedef std::pair<key_type, mapped_type> GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::value_type

the actual storage item

Definition at line 109 of file VectorMap.h.

Constructor & Destructor Documentation

◆ VectorMap() [1/3]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::VectorMap ( const allocator_type & alloc = allocator_type())
inline

default constructor from the the allocator

Parameters
cmpcomparison criteria for the key
allocallocator to be used

Definition at line 617 of file VectorMap.h.

617: m_vct( alloc ) {}
A bit modified version of 'Loki::AssocVector' associative vector from Loki library by Andrei Alexandr...
Definition VectorMap.h:100
_vector m_vct
the underlying sorted vector of (key,mapped) pairs
Definition VectorMap.h:717

◆ VectorMap() [2/3]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class INPUT>
GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::VectorMap ( INPUT first,
INPUT last,
const allocator_type & alloc = allocator_type() )
inline

templated constructor from "convertible" sequence

Parameters
first'begin'-iterator for the convertible sequence
last'end'-iterator for the convertible sequence
cmpcomparison criteria for the key
allocallocator to be used

Definition at line 625 of file VectorMap.h.

625 : m_vct( first, last, alloc ) {
626 std::sort( m_vct.begin(), m_vct.end(), compare() );
627 }
const compare_type & compare() const
get the comparison criteria itself
Definition VectorMap.h:641

◆ VectorMap() [3/3]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::VectorMap ( std::initializer_list< value_type > first,
const allocator_type & alloc = allocator_type() )
inline

tconstructor from initializer list

Parameters
list
cmpcomparison criteria for the key
allocallocator to be used

Definition at line 633 of file VectorMap.h.

634 : m_vct( first, alloc ) {
635 std::sort( m_vct.begin(), m_vct.end(), compare() );
636 }

Member Function Documentation

◆ at()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const mapped_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::at ( const key_type & key) const
inline

checked access to elements by key throw std::out_of_range exception for non-existing keys

// OK:
K key = ... ;
std::cout << " Value: " << m.at(key) << std::end ; // it is OK!
Exceptions
std::out_of_rangefor non-existing keys
Parameters
keykey value
Returns
mapped value

Definition at line 605 of file VectorMap.h.

605 {
606 iterator res = find( key );
607 if ( end() == res ) this->throw_out_of_range_exception();
608 return res->second; // cppcheck-suppress derefInvalidIteratorRedundantCheck; the above throws
609 }
void throw_out_of_range_exception() const
throw std::out_of_range exception
Definition MapBase.cpp:23
iterator end() const
"end" iterator for sequential access (const-only version!)
Definition VectorMap.h:175
_vector::const_iterator iterator
visible const_iterator (exported)
Definition VectorMap.h:133
iterator find(const key_type &key) const
find the element by key
Definition VectorMap.h:404

◆ begin()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::begin ( ) const
inline

"begin" iterator for sequential access (const-only version!)

Definition at line 173 of file VectorMap.h.

173{ return m_vct.begin(); }

◆ clear()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::clear ( )
inline

clear the container

Definition at line 436 of file VectorMap.h.

436{ m_vct.clear(); }

◆ compare() [1/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const compare_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::compare ( ) const
inline

get the comparison criteria itself

Definition at line 641 of file VectorMap.h.

641 {
642 static const compare_type s_cmp = compare_type();
643 return s_cmp;
644 }
_compare_type compare_type
the actual comparison criteria for valye_type objects
Definition VectorMap.h:168

◆ compare() [2/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class TYPE1, class TYPE2>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::compare ( const TYPE1 & obj1,
const TYPE2 & obj2 ) const
inlineprotected

compare the objects using the comaprison criteria

Parameters
objthe first object
objthe second object
Returns
result of (obj1,obj2) comparison

Definition at line 695 of file VectorMap.h.

695 {
696 return compare()( obj1, obj2 );
697 }

◆ compare_key()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const key_compare & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::compare_key ( ) const
inline

get the comparison criteria for keys

Definition at line 646 of file VectorMap.h.

646{ return compare(); }

◆ count()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::count ( const key_type & key) const
inline

count number of elements with the certain key

K key = ... ;
std::cout << " # of elements for the key: " << m.count(key) << std::end ;
Parameters
keykey to be searched
Returns
number of elements with the given key (0 or 1)

Definition at line 424 of file VectorMap.h.

424{ return end() == find( key ) ? 0 : 1; }

◆ empty()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::empty ( ) const
inline

empty container ?

Definition at line 430 of file VectorMap.h.

430{ return m_vct.empty(); }

◆ end()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::end ( ) const
inline

"end" iterator for sequential access (const-only version!)

Definition at line 175 of file VectorMap.h.

175{ return m_vct.end(); }

◆ equal_range()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterators GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::equal_range ( const key_type & key) const
inline

Definition at line 427 of file VectorMap.h.

427{ return std::equal_range( begin(), end(), key, compare() ); }
iterator begin() const
"begin" iterator for sequential access (const-only version!)
Definition VectorMap.h:173

◆ erase() [1/4]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::erase ( const key_type & key)
inline

erase the element using the key

...
K key = ... ;
std::cout << " # of erased elements "
<< m.erase ( key ) << std::endl ;
Parameters
keykey for the element to be erased
Returns
number of erased elements (0 or 1)

Definition at line 201 of file VectorMap.h.

201 {
202 iterator pos = find( key );
203 if ( end() == pos ) { return 0; }
204 erase( pos );
205 return 1;
206 }

◆ erase() [2/4]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::erase ( iterator first,
iterator last )
inline

erase the sequence of elements using the iterators

Parameters
firstbegin iterator of sub-sequence to be erased
endend iterator of the sub_sequence to be erased
Returns
number of erased elements

Definition at line 212 of file VectorMap.h.

212 {
213 m_vct.erase( iter( first ), iter( last ) );
214 return last - first;
215 }
_iterator iter(iterator p)
the conversion from 'const' to 'non-const' iterator
Definition VectorMap.h:703

◆ erase() [3/4]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::erase ( iterator pos)
inline

erase the element using the iterator

Parameters
posposition of the element to be erased

Definition at line 184 of file VectorMap.h.

184{ m_vct.erase( iter( pos ) ); }

◆ erase() [4/4]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class TYPE>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::erase ( TYPE first,
TYPE last )
inline

erase the sequence of elements using the sequence of keys

// some sequence of keys, to be removed
KEYS keys = ... ;
std::cout
<< " # keys to be removed: " << keys.size()
<< " # keys removed: " << m.erase( keys.begin() , keys.end() )
<< std::endl ;
Parameters
firstbegin-iterator for the sequence of keys
lastend-iterator for the sequence of keys
Returns
number of erased elements

Definition at line 237 of file VectorMap.h.

237 {
238 size_type res = 0;
239 for ( ; first != last; ++first ) { res += erase( *first ); }
240 return res;
241 }
ALLOCATOR::size_type size_type
the types to conform STL
Definition VectorMap.h:119

◆ find()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::find ( const key_type & key) const
inline

find the element by key

Map m = ... ;
K key = ...;
// Is key in the container?
Map::iterator ifound = m.find( key ) ;
if ( m.end() != ifound )
{
std::cout << "The value is : " << ifound->second << std::endl ;
}
Extension of the STL map.
Definition Map.h:83
map_type::iterator iterator
Definition Map.h:98
Parameters
keykey to be searched
Returns
iterator to the element position in the container

Definition at line 404 of file VectorMap.h.

404 {
406 if ( end() != res && compare( key, res->first ) ) { res = end(); }
407 return res;
408 }
iterator lower_bound(const key_type &key) const
Definition VectorMap.h:425

◆ insert() [1/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
result_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( const key_type & key,
const mapped_type & mapped )
inline

insert the (key,value) pair into the container

Attention
there is no replacement for the existing key!

It is STL-compliant behavior for associative containers.

K key = ... ;
V val1 = ... ;
V val2 = ... ;
std::cout
<< " Before insert: " << m[key] // should be: V()
<< std::end ;
// insert the value into the map:
const bool inserted1 = m.insert( key , val1 ).second ;
std::cout
<< " 1st insert: "
<< Gaudi::Utils::toString( inserted1 ) // should be: "True"
<< " value: " << m[key] // should be: val1
<< std::endl ;
// try to re-insert another value with the same key:
const bool inserted2 = m.insert( key , val2 ).second ;
std::cout
<< " 2nd insert: "
<< Gaudi::Utils::toString( inserted2 ) // should be: "False"
<< " value: " << m[key] // should be: val1
<< std::endl ;
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Definition ToStream.h:326
Parameters
keykey value to be inserted
mappedvalue to be associated with the key
Returns
position of the inserted elements with the flag which allows to distinguish the actual insertion

Definition at line 283 of file VectorMap.h.

283{ return insert( value_type( key, mapped ) ); }
std::pair< key_type, mapped_type > value_type
the actual storage item
Definition VectorMap.h:109

◆ insert() [2/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
result_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( const value_type & value)
inline

insert the (key,value) pair into the container

Attention
there is no replacement for the existing element!

It is STL-compliant behavior for associative containers.

K key = ... ;
V val1 = ... ;
V val2 = ... ;
std::cout
<< " Before insert: " << m[key] // should be: V()
<< std::end ;
// insert the value into the map:
const bool inserted1 = m.insert ( std::make_pair( key , val1 ) ).second ;
std::cout
<< " 1st insert: "
<< Gaudi::Utils::toString( inserted1 ) // should be: "True"
<< " value: " << m[key] // should be: val1
<< std::endl ;
// try to re-insert another value with the same key:
const bool inserted2 = m.insert ( std::make_pair( key , val2 ) ).second ;
std::cout
<< " 2nd insert: "
<< Gaudi::Utils::toString( inserted2 ) // should be: "False"
<< " value: " << m[key] // should be: val1
<< std::endl ;
Parameters
valuevalue to be inserted
Returns
position of the inserted elements with the flag which allows to distinguish the actual insertion

Definition at line 324 of file VectorMap.h.

324 {
325 bool found = true;
327 if ( end() == result || compare( value.first, result->first ) ) {
328 result = m_vct.insert( result, value );
329 found = false;
330 }
331 return result_type( iter( result ), !found );
332 }
std::pair< iterator, bool > result_type
visible iterator pait
Definition VectorMap.h:143
_vector::iterator _iterator
the regular iterator (no export)
Definition VectorMap.h:129

◆ insert() [3/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
result_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( iterator pos,
const key_type & key,
const mapped_type & mapped )
inline

insert the (key,value) pair into the container With the right guess the method could be more efficient

Attention
there is no replacement for the existing element!
Parameters
posthe guess about position where to insert the element
keykey value to be inserted
mappedvalue to be associated with the key
Returns
position of the inserted elements with the flag which indicated the actual insertion

Definition at line 357 of file VectorMap.h.

357 {
358 return insert( pos, value_type( key, mapped ) );
359 }

◆ insert() [4/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
result_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( iterator pos,
const value_type & value )
inline

insert the element with some guess about its new position With the right guess the method could be more efficient

Attention
there is no replacement for the existing element!
Parameters
posthe guess about position where to insert the element
valuevalue to be inserted
Returns
position of the inserted elements with the flag which indicated the actual insertion

Definition at line 341 of file VectorMap.h.

341 {
342 if ( pos != end() && compare( *pos, value ) &&
343 ( pos == end() - 1 || ( !compare( value, *( pos + 1 ) ) && compare( *( pos + 1 ), value ) ) ) ) {
344 return result_type( m_vct.insert( iter( pos ), value ), true );
345 }
346 return insert( value );
347 }

◆ insert() [5/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class KEYS, class VALUES>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( KEYS kf,
KEYS kl,
VALUES vf )
inline

insert into the container the elements from 2 "parallel" sequences

Attention
there is no replacement for the existing element!
Parameters
kfthe begin iterator of the sequence of keys
klthe end iterator of the sequence of keys
vfthe begin iterator of the sequence of values

Definition at line 377 of file VectorMap.h.

377 {
378 for ( ; kf != kl; ++kf, ++vf ) { insert( *kf, *vf ); }
379 }

◆ insert() [6/6]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class PAIRS>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::insert ( PAIRS first,
PAIRS last )
inline

insert the sequence of elements into the container

Attention
there is no replacement for the existing element!
Parameters
firstthe begin iterator of the sequence
lastthe end iterator of the sequence

Definition at line 366 of file VectorMap.h.

366 {
367 for ( ; first != last; ++first ) { insert( *first ); }
368 }

◆ iter() [1/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::iter ( _iterator p)
inlineprotected

the conversion from 'non-const' to 'const' iterator

Definition at line 709 of file VectorMap.h.

709 {
710 auto result = begin();
711 std::advance( result, std::distance( m_vct.begin(), p ) );
712 return result;
713 }

◆ iter() [2/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::iter ( iterator p)
inlineprotected

the conversion from 'const' to 'non-const' iterator

Definition at line 703 of file VectorMap.h.

703 {
704 auto result = m_vct.begin();
706 return result;
707 }

◆ key_at()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const key_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::key_at ( const size_t index) const
inline

useful method for python decoration:

Parameters
index(INPUT) the index
Returns
the key at given index
Exceptions
std::out_of_rangefor invalid index

Definition at line 669 of file VectorMap.h.

669 {
670 if ( index >= size() ) { this->throw_out_of_range_exception(); }
671 auto it = this->begin();
673 return it->first;
674 }
size_type size() const
number of elements
Definition VectorMap.h:432

◆ lower_bound() [1/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::lower_bound ( const key_type & key)
inlineprotected

'lower-bound' - non-const version

Definition at line 699 of file VectorMap.h.

699 {
700 return std::lower_bound( m_vct.begin(), m_vct.end(), key, compare() );
701 }

◆ lower_bound() [2/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::lower_bound ( const key_type & key) const
inline

Definition at line 425 of file VectorMap.h.

425{ return std::lower_bound( begin(), end(), key, compare() ); }

◆ max_size()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::max_size ( ) const
inline

maximal allowed size

Definition at line 434 of file VectorMap.h.

434{ return m_vct.max_size(); }

◆ merge() [1/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
VectorMap & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::merge ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & right)
inline

merge two maps

Definition at line 652 of file VectorMap.h.

652 {
653 for ( const auto& i : right ) { update( i.first, i.second ); }
654 return *this;
655 }

◆ merge() [2/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
template<class K1, class K2, class K3, class K4>
VectorMap & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::merge ( const VectorMap< K1, K2, K3, K4 > & right)
inline

merge two maps

Definition at line 658 of file VectorMap.h.

658 {
659 for ( const auto& i : right ) { update( i.first, i.second ); }
660 return *this;
661 }

◆ operator()()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const mapped_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::operator() ( const key_type & key) const
inline

access to element by key (const version) there is no container increment for missing keys

Attention
The behavior different from std::map, it is similar to GaudiUtils::Map

The method is added on request from ATLAS (see Savannah report #21395 and #21394) For typical usage of this class in LHCb context as "ExtraInfo" field I would like to recommend to AVOID this method

// OK:
K key = ... ;
std::cout << " Value: " << m(key) << std::end ; // it is OK!
// ERROR:
V value = ... ;
m(key) = value ; // ERROR!
See also
GaudiUtils::Map
Parameters
keykey value
Returns
mapped value for existing key and the default value for non-existing key

Definition at line 551 of file VectorMap.h.

551 {
552 static const mapped_type s_default = mapped_type();
553 iterator res = find( key );
554 if ( end() == res ) { return s_default; }
555 return res->second;
556 }
VALUE mapped_type
the actual type of value
Definition VectorMap.h:105

◆ operator<()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::operator< ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & other) const
inline

comparison criteria for containers

Definition at line 445 of file VectorMap.h.

445{ return m_vct < other.m_vct; }

◆ operator==()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::operator== ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & other) const
inline

comparison criteria for containers

Definition at line 443 of file VectorMap.h.

443{ return m_vct == other.m_vct; }

◆ operator[]()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const mapped_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::operator[] ( const key_type & key) const
inline

access to element by key (const version) there is no container increment for missing keys

Attention
The behavior different from std::map, it is similar to GaudiUtils::Map

The method is added on request from ATLAS (see Savannah report #21395 and #21394) For typical usage of this class in LHCb context as "ExtraInfo" field I would like to recommend to AVOID this method

// OK:
K key = ... ;
std::cout << " Value: " << m[key] << std::end ; // it is OK!
// ERROR:
V value = ... ;
m[key] = value ; // ERROR!
See also
GaudiUtils::Map
Parameters
keykey value
Returns
mapped value

Definition at line 587 of file VectorMap.h.

587{ return ( *this )( key ); }

◆ rbegin()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
reverse_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::rbegin ( ) const
inline

"rbegin" iterator for sequential access (const-only version!)

Definition at line 177 of file VectorMap.h.

177{ return m_vct.rbegin(); }

◆ rend()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
reverse_iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::rend ( ) const
inline

"rend" iterator for sequential access (const-only version!)

Definition at line 179 of file VectorMap.h.

179{ return m_vct.rend(); }

◆ reserve()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::reserve ( size_type num)
inline

reserve the space in the container for at least 'num' elements

Definition at line 438 of file VectorMap.h.

438{ m_vct.reserve( num ); }

◆ size()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
size_type GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::size ( ) const
inline

number of elements

Definition at line 432 of file VectorMap.h.

432{ return m_vct.size(); }

◆ swap()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
void GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::swap ( VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & other)
inline

swap function, which 'swaps' the content of two containers

Definition at line 440 of file VectorMap.h.

440{ std::swap( m_vct, other.m_vct ); }
void swap(GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > &left, GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > &right)
the definition of specialized algorithm for swapping
Definition VectorMap.h:726

◆ update() [1/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::update ( const key_type & key,
const mapped_type & mapped )
inline

forced insertion of the key/mapped pair The method acts like "insert" but it DOES overwrite the existing mapped value.

Attention
There is no STL analogue

The method is added on request from ATLAS (see Savannah report #21395 and #21394)

K key = ... ;
V val1 = ... ;
V val2 = ... ;
std::cout << "Value " << m[key] << std::endl ; // should be: V()
m.update ( key , val1 ) ;
std::cout << "Value " << m[key] << std::endl ; // should be: val1
m.update ( key , val2 ) ;
std::cout << "Value " << m[key] << std::endl ; // should be: val2
Parameters
keykey value
mappedmapped value
Returns
true if the existing value has been replaced

Definition at line 480 of file VectorMap.h.

480 {
482 if ( end() == result || compare( key, result->first ) ) {
483 result = m_vct.insert( result, value_type( key, mapped ) );
484 return false;
485 } else {
486 result->second = mapped;
487 }
488 //
489 return true;
490 }

◆ update() [2/2]

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::update ( const value_type & val)
inline

forced insertion of the key/mapped pair The method acts like "insert" but it DOES overwrite the mapped value.

Attention
There is no STL analogue

The method is added on request from ATLAS (see Savannah report #21395 and #21394)

K key = ... ;
V val1 = ... ;
V val2 = ... ;
std::cout << "Value " << m[key] << std::endl ; // should be: V()
m.update ( std::make_pair ( key , val1 ) ) ;
std::cout << "Value " << m[key] << std::endl ; // should be: val1
m.update ( std::make_pair ( key , val2 ) ) ;
std::cout << "Value " << m[key] << std::endl ; // should be: val2
Parameters
vala pair of (key,value)
Returns
true if the existing value has been replaced

Definition at line 519 of file VectorMap.h.

519{ return update( val.first, val.second ); }

◆ upper_bound()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
iterator GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::upper_bound ( const key_type & key) const
inline

Definition at line 426 of file VectorMap.h.

426{ return std::upper_bound( begin(), end(), key, compare() ); }

◆ value_at()

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
const mapped_type & GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::value_at ( const size_t index) const
inline

useful method for python decoration:

Parameters
index(INPUT) the index
Returns
the value at given index
Exceptions
std::out_of_rangefor invalid index

Definition at line 680 of file VectorMap.h.

680 {
681 if ( index >= size() ) { this->throw_out_of_range_exception(); }
682 auto it = this->begin();
684 return it->second;
685 }

Friends And Related Symbol Documentation

◆ operator!=

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool operator!= ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & left,
const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & right )
friend

Definition at line 448 of file VectorMap.h.

448{ return !( left == right ); }

◆ operator<<

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
std::ostream & operator<< ( std::ostream & str,
const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > &  )
friend

printout to ostream - not implemented

Definition at line 648 of file VectorMap.h.

648{ return str; }

◆ operator<=

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool operator<= ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & left,
const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & right )
friend

Definition at line 450 of file VectorMap.h.

450{ return !( right < left ); }

◆ operator>

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool operator> ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & left,
const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & right )
friend

Definition at line 447 of file VectorMap.h.

447{ return right < left; }

◆ operator>=

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
bool operator>= ( const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & left,
const VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR > & right )
friend

Definition at line 449 of file VectorMap.h.

449{ return !( left < right ); }

Member Data Documentation

◆ m_vct

template<class KEY, class VALUE, class KEYCOMPARE = std::less<const KEY>, class ALLOCATOR = std::allocator<std::pair<KEY, VALUE>>>
_vector GaudiUtils::VectorMap< KEY, VALUE, KEYCOMPARE, ALLOCATOR >::m_vct
private

the underlying sorted vector of (key,mapped) pairs

Definition at line 717 of file VectorMap.h.


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