Classes | Public Types | Public Member Functions | Protected Types | Private Member Functions | Private Attributes | List of all members
vbl_batch_compact_multimap< K, T, C > Class Template Reference

A fast read and batch-write map-style collection. More...

#include <vbl_batch_compact_multimap.h>

Classes

class  input_compare
 A comparator to sort input data, by ignoring the value in pair<key, value>. More...
 

Public Types

typedef K key_type
 
typedef T value_type
 
typedef std::pair< key_type, value_typeinput_type
 The type of data in the inputted sequence. More...
 
typedef C key_compare
 
typedef unsigned index_type
 
typedef std::vector< key_typekey_container_type
 
typedef std::vector< index_typeindex_container_type
 
typedef std::vector< value_typevalue_container_type
 
typedef key_container_type::const_iterator const_key_iterator
 
typedef value_container_type::const_iterator const_value_iterator
 

Public Member Functions

 vbl_batch_compact_multimap ()=default
 
template<typename CI >
 vbl_batch_compact_multimap (CI start, CI finish)
 
template<typename CI >
void assign (CI start, CI finish)
 Change all the values in the multimap. More...
 
template<typename CI >
void assign_sorted (CI start, CI finish)
 Change all the values in the multimap, to a ready sorted sequence. More...
 
void swap (vbl_batch_compact_multimap &x)
 
bool operator== (const vbl_batch_compact_multimap &rhs)
 
const_key_iterator keys_begin () const
 
const_key_iterator keys_end () const
 
const_value_iterator values_begin () const
 
const_value_iterator values_end () const
 
bool empty () const
 
std::size_t size () const
 
const_value_iterator lower_bound (const key_type &x) const
 Finds the beginning of a subsequence of values whose key matches given x. More...
 
const_value_iterator upper_bound (const key_type &x) const
 Finds the one past the end of a subsequence of values whose key matches given x. More...
 
std::pair< const_value_iterator, const_value_iteratorequal_range (const key_type &x) const
 A more efficient make_pair(lower_bound(...), upper_bound(...)). More...
 
const_value_iterator find (const key_type &x) const
 Finds the first value with key matching x, or returns values_end() if no match,. More...
 
std::size_t count (const key_type &x) const
 Finds the number of values matching key x,. More...
 

Protected Types

typedef std::vector< input_typeinput_container_type
 The type of container used internally to process inputted data. More...
 

Private Member Functions

template<typename CI , typename CMP >
bool is_sorted (CI start, CI end, CMP comp)
 

Private Attributes

key_container_type keys_
 
index_container_type indices_
 
value_container_type values_
 

Detailed Description

template<typename K, typename T, typename C = std::less<K>>
class vbl_batch_compact_multimap< K, T, C >

A fast read and batch-write map-style collection.

This container stores its keys separately from its values, and has fast construction and deletion. It has all the const-access map fundtions, but its contents can only be modified all-at-once. You can not get a key,value pair, but you can get access to all the compactly-stored values for a given key.

Definition at line 27 of file vbl_batch_compact_multimap.h.

Member Typedef Documentation

◆ const_key_iterator

template<typename K, typename T, typename C = std::less<K>>
typedef key_container_type::const_iterator vbl_batch_compact_multimap< K, T, C >::const_key_iterator

Definition at line 40 of file vbl_batch_compact_multimap.h.

◆ const_value_iterator

template<typename K, typename T, typename C = std::less<K>>
typedef value_container_type::const_iterator vbl_batch_compact_multimap< K, T, C >::const_value_iterator

Definition at line 41 of file vbl_batch_compact_multimap.h.

◆ index_container_type

template<typename K, typename T, typename C = std::less<K>>
typedef std::vector<index_type> vbl_batch_compact_multimap< K, T, C >::index_container_type

Definition at line 37 of file vbl_batch_compact_multimap.h.

◆ index_type

template<typename K, typename T, typename C = std::less<K>>
typedef unsigned vbl_batch_compact_multimap< K, T, C >::index_type

Definition at line 35 of file vbl_batch_compact_multimap.h.

◆ input_container_type

template<typename K, typename T, typename C = std::less<K>>
typedef std::vector<input_type> vbl_batch_compact_multimap< K, T, C >::input_container_type
protected

The type of container used internally to process inputted data.

Definition at line 45 of file vbl_batch_compact_multimap.h.

◆ input_type

template<typename K, typename T, typename C = std::less<K>>
typedef std::pair<key_type, value_type> vbl_batch_compact_multimap< K, T, C >::input_type

The type of data in the inputted sequence.

Definition at line 33 of file vbl_batch_compact_multimap.h.

◆ key_compare

template<typename K, typename T, typename C = std::less<K>>
typedef C vbl_batch_compact_multimap< K, T, C >::key_compare

Definition at line 34 of file vbl_batch_compact_multimap.h.

◆ key_container_type

template<typename K, typename T, typename C = std::less<K>>
typedef std::vector<key_type> vbl_batch_compact_multimap< K, T, C >::key_container_type

Definition at line 36 of file vbl_batch_compact_multimap.h.

◆ key_type

template<typename K, typename T, typename C = std::less<K>>
typedef K vbl_batch_compact_multimap< K, T, C >::key_type

Definition at line 30 of file vbl_batch_compact_multimap.h.

◆ value_container_type

template<typename K, typename T, typename C = std::less<K>>
typedef std::vector<value_type> vbl_batch_compact_multimap< K, T, C >::value_container_type

Definition at line 38 of file vbl_batch_compact_multimap.h.

◆ value_type

template<typename K, typename T, typename C = std::less<K>>
typedef T vbl_batch_compact_multimap< K, T, C >::value_type

Definition at line 31 of file vbl_batch_compact_multimap.h.

Constructor & Destructor Documentation

◆ vbl_batch_compact_multimap() [1/2]

template<typename K, typename T, typename C = std::less<K>>
vbl_batch_compact_multimap< K, T, C >::vbl_batch_compact_multimap ( )
default

◆ vbl_batch_compact_multimap() [2/2]

template<typename K, typename T, typename C = std::less<K>>
template<typename CI >
vbl_batch_compact_multimap< K, T, C >::vbl_batch_compact_multimap ( CI  start,
CI  finish 
)
inline

Definition at line 65 of file vbl_batch_compact_multimap.h.

Member Function Documentation

◆ assign()

template<typename K, typename T, typename C = std::less<K>>
template<typename CI >
void vbl_batch_compact_multimap< K, T, C >::assign ( CI  start,
CI  finish 
)
inline

Change all the values in the multimap.

Definition at line 74 of file vbl_batch_compact_multimap.h.

◆ assign_sorted()

template<typename K, typename T, typename C = std::less<K>>
template<typename CI >
void vbl_batch_compact_multimap< K, T, C >::assign_sorted ( CI  start,
CI  finish 
)
inline

Change all the values in the multimap, to a ready sorted sequence.

The input values must already be sorted on their v.first members.

Definition at line 84 of file vbl_batch_compact_multimap.h.

◆ count()

template<typename K, typename T, typename C = std::less<K>>
std::size_t vbl_batch_compact_multimap< K, T, C >::count ( const key_type x) const
inline

Finds the number of values matching key x,.

Definition at line 184 of file vbl_batch_compact_multimap.h.

◆ empty()

template<typename K, typename T, typename C = std::less<K>>
bool vbl_batch_compact_multimap< K, T, C >::empty ( ) const
inline

Definition at line 124 of file vbl_batch_compact_multimap.h.

◆ equal_range()

template<typename K, typename T, typename C = std::less<K>>
std::pair<const_value_iterator, const_value_iterator> vbl_batch_compact_multimap< K, T, C >::equal_range ( const key_type x) const
inline

A more efficient make_pair(lower_bound(...), upper_bound(...)).

Definition at line 152 of file vbl_batch_compact_multimap.h.

◆ find()

template<typename K, typename T, typename C = std::less<K>>
const_value_iterator vbl_batch_compact_multimap< K, T, C >::find ( const key_type x) const
inline

Finds the first value with key matching x, or returns values_end() if no match,.

Definition at line 172 of file vbl_batch_compact_multimap.h.

◆ is_sorted()

template<typename K, typename T, typename C = std::less<K>>
template<typename CI , typename CMP >
bool vbl_batch_compact_multimap< K, T, C >::is_sorted ( CI  start,
CI  end,
CMP  comp 
)
inlineprivate

Definition at line 201 of file vbl_batch_compact_multimap.h.

◆ keys_begin()

template<typename K, typename T, typename C = std::less<K>>
const_key_iterator vbl_batch_compact_multimap< K, T, C >::keys_begin ( ) const
inline

Definition at line 120 of file vbl_batch_compact_multimap.h.

◆ keys_end()

template<typename K, typename T, typename C = std::less<K>>
const_key_iterator vbl_batch_compact_multimap< K, T, C >::keys_end ( ) const
inline

Definition at line 121 of file vbl_batch_compact_multimap.h.

◆ lower_bound()

template<typename K, typename T, typename C = std::less<K>>
const_value_iterator vbl_batch_compact_multimap< K, T, C >::lower_bound ( const key_type x) const
inline

Finds the beginning of a subsequence of values whose key matches given x.

Returns
iterator to the first value whose key matches x, or the next greatest element if no match is found.

Definition at line 132 of file vbl_batch_compact_multimap.h.

◆ operator==()

template<typename K, typename T, typename C = std::less<K>>
bool vbl_batch_compact_multimap< K, T, C >::operator== ( const vbl_batch_compact_multimap< K, T, C > &  rhs)
inline

Definition at line 111 of file vbl_batch_compact_multimap.h.

◆ size()

template<typename K, typename T, typename C = std::less<K>>
std::size_t vbl_batch_compact_multimap< K, T, C >::size ( ) const
inline

Definition at line 125 of file vbl_batch_compact_multimap.h.

◆ swap()

template<typename K, typename T, typename C = std::less<K>>
void vbl_batch_compact_multimap< K, T, C >::swap ( vbl_batch_compact_multimap< K, T, C > &  x)
inline

Definition at line 104 of file vbl_batch_compact_multimap.h.

◆ upper_bound()

template<typename K, typename T, typename C = std::less<K>>
const_value_iterator vbl_batch_compact_multimap< K, T, C >::upper_bound ( const key_type x) const
inline

Finds the one past the end of a subsequence of values whose key matches given x.

Returns
iterator to one past the last value whose key that matches key, or to the next greatest element if no match is found.

Definition at line 143 of file vbl_batch_compact_multimap.h.

◆ values_begin()

template<typename K, typename T, typename C = std::less<K>>
const_value_iterator vbl_batch_compact_multimap< K, T, C >::values_begin ( ) const
inline

Definition at line 122 of file vbl_batch_compact_multimap.h.

◆ values_end()

template<typename K, typename T, typename C = std::less<K>>
const_value_iterator vbl_batch_compact_multimap< K, T, C >::values_end ( ) const
inline

Definition at line 123 of file vbl_batch_compact_multimap.h.

Member Data Documentation

◆ indices_

template<typename K, typename T, typename C = std::less<K>>
index_container_type vbl_batch_compact_multimap< K, T, C >::indices_
private

Definition at line 197 of file vbl_batch_compact_multimap.h.

◆ keys_

template<typename K, typename T, typename C = std::less<K>>
key_container_type vbl_batch_compact_multimap< K, T, C >::keys_
private

Definition at line 196 of file vbl_batch_compact_multimap.h.

◆ values_

template<typename K, typename T, typename C = std::less<K>>
value_container_type vbl_batch_compact_multimap< K, T, C >::values_
private

Definition at line 198 of file vbl_batch_compact_multimap.h.


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