rippled
Classes | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc > Class Template Reference
Collaboration diagram for ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >:
Collaboration graph
[legend]

Classes

struct  const_iterator
 
struct  iterator
 

Public Types

using key_type = Key
 
using mapped_type = Value
 
using value_type = std::pair< Key const, mapped_type >
 
using size_type = std::size_t
 
using difference_type = std::size_t
 
using hasher = Hash
 
using key_equal = Pred
 
using allocator_type = Alloc
 
using reference = value_type &
 
using const_reference = value_type const &
 
using pointer = value_type *
 
using const_pointer = value_type const *
 
using map_type = std::unordered_map< key_type, mapped_type, hasher, key_equal, allocator_type >
 
using partition_map_type = std::vector< map_type >
 

Public Member Functions

 partitioned_unordered_map (std::optional< std::size_t > partitions=std::nullopt)
 
std::size_t partitions () const
 
partition_map_typemap ()
 
iterator begin ()
 
const_iterator cbegin () const
 
const_iterator begin () const
 
iterator end ()
 
const_iterator cend () const
 
const_iterator end () const
 
iterator find (key_type const &key)
 
const_iterator find (key_type const &key) const
 
template<class T , class U >
std::pair< iterator, bool > emplace (std::piecewise_construct_t const &, T &&keyTuple, U &&valueTuple)
 
template<class T , class U >
std::pair< iterator, bool > emplace (T &&key, U &&val)
 
void clear ()
 
iterator erase (const_iterator position)
 
std::size_t size () const
 
Value & operator[] (Key const &key)
 

Private Member Functions

std::size_t partitioner (Key const &key) const
 
template<class T >
void find (key_type const &key, T &it) const
 

Static Private Member Functions

template<class T >
static void end (T &it)
 
template<class T >
static void begin (T &it)
 

Private Attributes

std::size_t partitions_
 
partition_map_type map_ {}
 

Detailed Description

template<typename Key, typename Value, typename Hash, typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
class ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >

Definition at line 43 of file partitioned_unordered_map.h.

Member Typedef Documentation

◆ key_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::key_type = Key

Definition at line 48 of file partitioned_unordered_map.h.

◆ mapped_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::mapped_type = Value

Definition at line 49 of file partitioned_unordered_map.h.

◆ value_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::value_type = std::pair<Key const, mapped_type>

Definition at line 50 of file partitioned_unordered_map.h.

◆ size_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::size_type = std::size_t

Definition at line 51 of file partitioned_unordered_map.h.

◆ difference_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::difference_type = std::size_t

Definition at line 52 of file partitioned_unordered_map.h.

◆ hasher

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::hasher = Hash

Definition at line 53 of file partitioned_unordered_map.h.

◆ key_equal

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::key_equal = Pred

Definition at line 54 of file partitioned_unordered_map.h.

◆ allocator_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::allocator_type = Alloc

Definition at line 55 of file partitioned_unordered_map.h.

◆ reference

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::reference = value_type&

Definition at line 56 of file partitioned_unordered_map.h.

◆ const_reference

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::const_reference = value_type const&

Definition at line 57 of file partitioned_unordered_map.h.

◆ pointer

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::pointer = value_type*

Definition at line 58 of file partitioned_unordered_map.h.

◆ const_pointer

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::const_pointer = value_type const*

Definition at line 59 of file partitioned_unordered_map.h.

◆ map_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::map_type = std:: unordered_map<key_type, mapped_type, hasher, key_equal, allocator_type>

Definition at line 61 of file partitioned_unordered_map.h.

◆ partition_map_type

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
using ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::partition_map_type = std::vector<map_type>

Definition at line 62 of file partitioned_unordered_map.h.

Constructor & Destructor Documentation

◆ partitioned_unordered_map()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::partitioned_unordered_map ( std::optional< std::size_t partitions = std::nullopt)

Definition at line 240 of file partitioned_unordered_map.h.

Member Function Documentation

◆ partitioner()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
std::size_t ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::partitioner ( Key const &  key) const
private

Definition at line 212 of file partitioned_unordered_map.h.

◆ end() [1/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
template<class T >
static void ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::end ( T &  it)
staticprivate

Definition at line 219 of file partitioned_unordered_map.h.

◆ begin() [1/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
template<class T >
static void ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::begin ( T &  it)
staticprivate

Definition at line 227 of file partitioned_unordered_map.h.

◆ partitions()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
std::size_t ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::partitions ( ) const

Definition at line 253 of file partitioned_unordered_map.h.

◆ map()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
partition_map_type& ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::map ( )

Definition at line 259 of file partitioned_unordered_map.h.

◆ begin() [2/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::begin ( )

Definition at line 265 of file partitioned_unordered_map.h.

◆ cbegin()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
const_iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::cbegin ( ) const

Definition at line 273 of file partitioned_unordered_map.h.

◆ begin() [3/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
const_iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::begin ( ) const

Definition at line 281 of file partitioned_unordered_map.h.

◆ end() [2/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::end ( )

Definition at line 287 of file partitioned_unordered_map.h.

◆ cend()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
const_iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::cend ( ) const

Definition at line 295 of file partitioned_unordered_map.h.

◆ end() [3/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
const_iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::end ( ) const

Definition at line 303 of file partitioned_unordered_map.h.

◆ find() [1/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
template<class T >
void ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::find ( key_type const &  key,
T &  it 
) const
private

Definition at line 311 of file partitioned_unordered_map.h.

◆ find() [2/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::find ( key_type const &  key)

Definition at line 321 of file partitioned_unordered_map.h.

◆ find() [3/3]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
const_iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::find ( key_type const &  key) const

Definition at line 329 of file partitioned_unordered_map.h.

◆ emplace() [1/2]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
template<class T , class U >
std::pair<iterator, bool> ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::emplace ( std::piecewise_construct_t const &  ,
T &&  keyTuple,
U &&  valueTuple 
)

Definition at line 338 of file partitioned_unordered_map.h.

◆ emplace() [2/2]

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
template<class T , class U >
std::pair<iterator, bool> ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::emplace ( T &&  key,
U &&  val 
)

Definition at line 353 of file partitioned_unordered_map.h.

◆ clear()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
void ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::clear ( )

Definition at line 364 of file partitioned_unordered_map.h.

◆ erase()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
iterator ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::erase ( const_iterator  position)

Definition at line 371 of file partitioned_unordered_map.h.

◆ size()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
std::size_t ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::size ( ) const

Definition at line 389 of file partitioned_unordered_map.h.

◆ operator[]()

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
Value& ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::operator[] ( Key const &  key)

Definition at line 398 of file partitioned_unordered_map.h.

Member Data Documentation

◆ partitions_

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
std::size_t ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::partitions_
private

Definition at line 45 of file partitioned_unordered_map.h.

◆ map_

template<typename Key , typename Value , typename Hash , typename Pred = std::equal_to<Key>, typename Alloc = std::allocator<std::pair<const Key, Value>>>
partition_map_type ripple::partitioned_unordered_map< Key, Value, Hash, Pred, Alloc >::map_ {}
mutableprivate

Definition at line 404 of file partitioned_unordered_map.h.