Public Types | Public Member Functions | Friends | List of all members
FixedHashMap< MaxSize, Key, ValueType, Hash, KeyEqual > Class Template Reference

A hash table with a compile-time specified maximum size and ability to efficiently handle perfect hashes. More...

#include <FixedHashMap.hpp>

Public Types

using key_type = Key
 
using mapped_type = ValueType
 
using value_type = std::pair< const key_type, mapped_type >
 
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using hasher = Hash
 
using key_equal = KeyEqual
 
using reference = value_type &
 
using const_reference = const value_type &
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using iterator = FixedHashMapIterator< MaxSize, key_type, value_type, hasher, key_equal >
 
using const_iterator = FixedHashMapIterator< MaxSize, key_type, const value_type, hasher, key_equal >
 

Public Member Functions

 FixedHashMap (std::initializer_list< value_type > init) noexcept
 
 FixedHashMap (const FixedHashMap &)=default
 
FixedHashMapoperator= (const FixedHashMap &other) noexcept(noexcept(std::is_nothrow_copy_constructible< value_type >::value))
 
 FixedHashMap (FixedHashMap &&)=default
 
FixedHashMapoperator= (FixedHashMap &&other) noexcept
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
bool empty () const noexcept
 
size_t size () const noexcept
 
void clear () noexcept
 
iterator erase (const const_iterator &pos) noexcept
 
size_t erase (const key_type &key) noexcept
 
mapped_type & at (const key_type &key)
 
const mapped_type & at (const key_type &key) const
 
mapped_type & operator[] (const key_type &key) noexcept
 
size_t count (const key_type &key) const noexcept
 
iterator find (const key_type &key) noexcept
 
const_iterator find (const key_type &key) const noexcept
 
bool contains (const key_type &key) const noexcept
 Check if key is in the map.
 
key_equal key_eq () const noexcept
 Get key equal function object.
 
hasher hash_function () const noexcept
 Get hash function object.
 
void pup (PUP::er &p) noexcept
 
template<bool Assign, class M >
auto insert_or_assign_impl (key_type &&key, M &&obj) noexcept -> std::pair< iterator, bool >
 
template<bool IsInserting>
auto get_data_entry (const Key &key) noexcept -> typename storage_type::iterator
 
std::pair< iterator, bool > insert (const value_type &value) noexcept
 Inserts the element if it does not exists.
 
std::pair< iterator, bool > insert (value_type &&value) noexcept
 Inserts the element if it does not exists.
 
template<typename... Args>
std::pair< iterator, bool > emplace (Args &&... args) noexcept
 Inserts the element if it does not exists.
 
template<class M >
std::pair< iterator, bool > insert_or_assign (const key_type &key, M &&obj) noexcept
 Inserts the element if it does not exists, otherwise assigns to it the new value.
 
template<class M >
std::pair< iterator, bool > insert_or_assign (key_type &&key, M &&obj) noexcept
 Inserts the element if it does not exists, otherwise assigns to it the new value.
 

Friends

template<size_t FMaxSize, class FKey , class FValueType , class FHash , class FKeyEqual >
bool operator== (const FixedHashMap< FMaxSize, FKey, FValueType, FHash, FKeyEqual > &a, const FixedHashMap< FMaxSize, FKey, FValueType, FHash, FKeyEqual > &b) noexcept
 

Detailed Description

template<size_t MaxSize, class Key, class ValueType, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>>
class FixedHashMap< MaxSize, Key, ValueType, Hash, KeyEqual >

A hash table with a compile-time specified maximum size and ability to efficiently handle perfect hashes.

There are a few requirements on the types passed to FixedHashMap. These are:

The interface is similar to std::unordered_map, so see the documentation for that for details.

Implementation Details


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