EnTT 3.13.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator > Class Template Reference

Associative container for key-value pairs with unique keys. More...

#include <dense_map.hpp>

Public Types

using key_type = Key
 Key type of the container.
 
using mapped_type = Type
 Mapped type of the container.
 
using value_type = std::pair< const Key, Type >
 Key-value type of the container.
 
using size_type = std::size_t
 Unsigned integer type.
 
using hasher = Hash
 Type of function to use to hash the keys.
 
using key_equal = KeyEqual
 Type of function to use to compare the keys for equality.
 
using allocator_type = Allocator
 Allocator type.
 
using iterator = internal::dense_map_iterator< typename packed_container_type::iterator >
 Input iterator type.
 
using const_iterator = internal::dense_map_iterator< typename packed_container_type::const_iterator >
 Constant input iterator type.
 
using local_iterator = internal::dense_map_local_iterator< typename packed_container_type::iterator >
 Input iterator type.
 
using const_local_iterator = internal::dense_map_local_iterator< typename packed_container_type::const_iterator >
 Constant input iterator type.
 

Public Member Functions

 dense_map ()
 Default constructor.
 
 dense_map (const allocator_type &allocator)
 Constructs an empty container with a given allocator.
 
 dense_map (const size_type cnt, const allocator_type &allocator)
 Constructs an empty container with a given allocator and user supplied minimal number of buckets.
 
 dense_map (const size_type cnt, const hasher &hash, const allocator_type &allocator)
 Constructs an empty container with a given allocator, hash function and user supplied minimal number of buckets.
 
 dense_map (const size_type cnt, const hasher &hash=hasher{}, const key_equal &equal=key_equal{}, const allocator_type &allocator=allocator_type{})
 Constructs an empty container with a given allocator, hash function, compare function and user supplied minimal number of buckets.
 
 dense_map (const dense_map &)=default
 Default copy constructor.
 
 dense_map (const dense_map &other, const allocator_type &allocator)
 Allocator-extended copy constructor.
 
 dense_map (dense_map &&) noexcept(std::is_nothrow_move_constructible_v< compressed_pair< sparse_container_type, hasher > > &&std::is_nothrow_move_constructible_v< compressed_pair< packed_container_type, key_equal > >)=default
 Default move constructor.
 
 dense_map (dense_map &&other, const allocator_type &allocator)
 Allocator-extended move constructor.
 
dense_mapoperator= (const dense_map &)=default
 Default copy assignment operator.
 
dense_mapoperator= (dense_map &&) noexcept(std::is_nothrow_move_assignable_v< compressed_pair< sparse_container_type, hasher > > &&std::is_nothrow_move_assignable_v< compressed_pair< packed_container_type, key_equal > >)=default
 Default move assignment operator.
 
constexpr allocator_type get_allocator () const noexcept
 Returns the associated allocator.
 
const_iterator cbegin () const noexcept
 Returns an iterator to the beginning.
 
const_iterator begin () const noexcept
 Returns an iterator to the beginning.
 
iterator begin () noexcept
 Returns an iterator to the beginning.
 
const_iterator cend () const noexcept
 Returns an iterator to the end.
 
const_iterator end () const noexcept
 Returns an iterator to the end.
 
iterator end () noexcept
 Returns an iterator to the end.
 
bool empty () const noexcept
 Checks whether a container is empty.
 
size_type size () const noexcept
 Returns the number of elements in a container.
 
size_type max_size () const noexcept
 Returns the maximum possible number of elements.
 
void clear () noexcept
 Clears the container.
 
std::pair< iterator, bool > insert (const value_type &value)
 Inserts an element into the container, if the key does not exist.
 
std::pair< iterator, bool > insert (value_type &&value)
 Inserts an element into the container, if the key does not exist.
 
template<typename Arg >
std::enable_if_t< std::is_constructible_v< value_type, Arg && >, std::pair< iterator, bool > > insert (Arg &&value)
 Inserts an element into the container, if the key does not exist.
 
template<typename It >
void insert (It first, It last)
 Inserts elements into the container, if their keys do not exist.
 
template<typename Arg >
std::pair< iterator, bool > insert_or_assign (const key_type &key, Arg &&value)
 Inserts an element into the container or assigns to the current element if the key already exists.
 
template<typename Arg >
std::pair< iterator, bool > insert_or_assign (key_type &&key, Arg &&value)
 Inserts an element into the container or assigns to the current element if the key already exists.
 
template<typename... Args>
std::pair< iterator, bool > emplace (Args &&...args)
 Constructs an element in-place, if the key does not exist.
 
template<typename... Args>
std::pair< iterator, bool > try_emplace (const key_type &key, Args &&...args)
 Inserts in-place if the key does not exist, does nothing if the key exists.
 
template<typename... Args>
std::pair< iterator, bool > try_emplace (key_type &&key, Args &&...args)
 Inserts in-place if the key does not exist, does nothing if the key exists.
 
iterator erase (const_iterator pos)
 Removes an element from a given position.
 
iterator erase (const_iterator first, const_iterator last)
 Removes the given elements from a container.
 
size_type erase (const key_type &key)
 Removes the element associated with a given key.
 
void swap (dense_map &other)
 Exchanges the contents with those of a given container.
 
mapped_typeat (const key_type &key)
 Accesses a given element with bounds checking.
 
const mapped_typeat (const key_type &key) const
 Accesses a given element with bounds checking.
 
mapped_typeoperator[] (const key_type &key)
 Accesses or inserts a given element.
 
mapped_typeoperator[] (key_type &&key)
 Accesses or inserts a given element.
 
size_type count (const key_type &key) const
 Returns the number of elements matching a key (either 1 or 0).
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, size_type > > count (const Other &key) const
 Returns the number of elements matching a key (either 1 or 0).
 
iterator find (const key_type &key)
 Finds an element with a given key.
 
const_iterator find (const key_type &key) const
 Finds an element with a given key.
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, iterator > > find (const Other &key)
 Finds an element with a key that compares equivalent to a given key.
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, const_iterator > > find (const Other &key) const
 Finds an element with a given key.
 
std::pair< iterator, iteratorequal_range (const key_type &key)
 Returns a range containing all elements with a given key.
 
std::pair< const_iterator, const_iteratorequal_range (const key_type &key) const
 Returns a range containing all elements with a given key.
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, std::pair< iterator, iterator > > > equal_range (const Other &key)
 Returns a range containing all elements that compare equivalent to a given key.
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, std::pair< const_iterator, const_iterator > > > equal_range (const Other &key) const
 Returns a range containing all elements with a given key.
 
bool contains (const key_type &key) const
 Checks if the container contains an element with a given key.
 
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, bool > > contains (const Other &key) const
 Checks if the container contains an element with a key that compares equivalent to a given value.
 
const_local_iterator cbegin (const size_type index) const
 Returns an iterator to the beginning of a given bucket.
 
const_local_iterator begin (const size_type index) const
 Returns an iterator to the beginning of a given bucket.
 
local_iterator begin (const size_type index)
 Returns an iterator to the beginning of a given bucket.
 
const_local_iterator cend (const size_type index) const
 Returns an iterator to the end of a given bucket.
 
const_local_iterator end (const size_type index) const
 Returns an iterator to the end of a given bucket.
 
local_iterator end (const size_type index)
 Returns an iterator to the end of a given bucket.
 
size_type bucket_count () const
 Returns the number of buckets.
 
size_type max_bucket_count () const
 Returns the maximum number of buckets.
 
size_type bucket_size (const size_type index) const
 Returns the number of elements in a given bucket.
 
size_type bucket (const key_type &key) const
 Returns the bucket for a given key.
 
float load_factor () const
 Returns the average number of elements per bucket.
 
float max_load_factor () const
 Returns the maximum average number of elements per bucket.
 
void max_load_factor (const float value)
 Sets the desired maximum average number of elements per bucket.
 
void rehash (const size_type cnt)
 Reserves at least the specified number of buckets and regenerates the hash table.
 
void reserve (const size_type cnt)
 Reserves space for at least the specified number of elements and regenerates the hash table.
 
hasher hash_function () const
 Returns the function used to hash the keys.
 
key_equal key_eq () const
 Returns the function used to compare keys for equality.
 

Detailed Description

template<typename Key, typename Type, typename Hash, typename KeyEqual, typename Allocator>
class entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >

Associative container for key-value pairs with unique keys.

Internally, elements are organized into buckets. Which bucket an element is placed into depends entirely on the hash of its key. Keys with the same hash code appear in the same bucket.

Template Parameters
KeyKey type of the associative container.
TypeMapped type of the associative container.
HashType of function to use to hash the keys.
KeyEqualType of function to use to compare the keys for equality.
AllocatorType of allocator used to manage memory and elements.

Definition at line 258 of file dense_map.hpp.

Member Typedef Documentation

◆ allocator_type

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::allocator_type = Allocator

Allocator type.

Definition at line 357 of file dense_map.hpp.

◆ const_iterator

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::const_iterator = internal::dense_map_iterator<typename packed_container_type::const_iterator>

Constant input iterator type.

Definition at line 361 of file dense_map.hpp.

◆ const_local_iterator

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::const_local_iterator = internal::dense_map_local_iterator<typename packed_container_type::const_iterator>

Constant input iterator type.

Definition at line 365 of file dense_map.hpp.

◆ hasher

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::hasher = Hash

Type of function to use to hash the keys.

Definition at line 353 of file dense_map.hpp.

◆ iterator

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::iterator = internal::dense_map_iterator<typename packed_container_type::iterator>

Input iterator type.

Definition at line 359 of file dense_map.hpp.

◆ key_equal

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::key_equal = KeyEqual

Type of function to use to compare the keys for equality.

Definition at line 355 of file dense_map.hpp.

◆ key_type

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::key_type = Key

Key type of the container.

Definition at line 345 of file dense_map.hpp.

◆ local_iterator

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::local_iterator = internal::dense_map_local_iterator<typename packed_container_type::iterator>

Input iterator type.

Definition at line 363 of file dense_map.hpp.

◆ mapped_type

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::mapped_type = Type

Mapped type of the container.

Definition at line 347 of file dense_map.hpp.

◆ size_type

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::size_type = std::size_t

Unsigned integer type.

Definition at line 351 of file dense_map.hpp.

◆ value_type

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::value_type = std::pair<const Key, Type>

Key-value type of the container.

Definition at line 349 of file dense_map.hpp.

Constructor & Destructor Documentation

◆ dense_map() [1/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( )
inline

Default constructor.

Definition at line 368 of file dense_map.hpp.

◆ dense_map() [2/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( const allocator_type allocator)
inlineexplicit

Constructs an empty container with a given allocator.

Parameters
allocatorThe allocator to use.

Definition at line 375 of file dense_map.hpp.

◆ dense_map() [3/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( const size_type  cnt,
const allocator_type allocator 
)
inline

Constructs an empty container with a given allocator and user supplied minimal number of buckets.

Parameters
cntMinimal number of buckets.
allocatorThe allocator to use.

Definition at line 384 of file dense_map.hpp.

◆ dense_map() [4/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( const size_type  cnt,
const hasher hash,
const allocator_type allocator 
)
inline

Constructs an empty container with a given allocator, hash function and user supplied minimal number of buckets.

Parameters
cntMinimal number of buckets.
hashHash function to use.
allocatorThe allocator to use.

Definition at line 394 of file dense_map.hpp.

◆ dense_map() [5/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( const size_type  cnt,
const hasher hash = hasher{},
const key_equal equal = key_equal{},
const allocator_type allocator = allocator_type{} 
)
inlineexplicit

Constructs an empty container with a given allocator, hash function, compare function and user supplied minimal number of buckets.

Parameters
cntMinimal number of buckets.
hashHash function to use.
equalCompare function to use.
allocatorThe allocator to use.

Definition at line 405 of file dense_map.hpp.

◆ dense_map() [6/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( const dense_map< Key, Type, Hash, KeyEqual, Allocator > &  other,
const allocator_type allocator 
)
inline

Allocator-extended copy constructor.

Parameters
otherThe instance to copy from.
allocatorThe allocator to use.

Definition at line 420 of file dense_map.hpp.

◆ dense_map() [7/7]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::dense_map ( dense_map< Key, Type, Hash, KeyEqual, Allocator > &&  other,
const allocator_type allocator 
)
inline

Allocator-extended move constructor.

Parameters
otherThe instance to move from.
allocatorThe allocator to use.

Definition at line 433 of file dense_map.hpp.

Member Function Documentation

◆ at() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
mapped_type & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::at ( const key_type key)
inline

Accesses a given element with bounds checking.

Parameters
keyA key of an element to find.
Returns
A reference to the mapped value of the requested element.

Definition at line 708 of file dense_map.hpp.

◆ at() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const mapped_type & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::at ( const key_type key) const
inline

Accesses a given element with bounds checking.

Parameters
keyA key of an element to find.
Returns
A reference to the mapped value of the requested element.

Definition at line 715 of file dense_map.hpp.

◆ begin() [1/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::begin ( ) const
inlinenoexcept

Returns an iterator to the beginning.

If the array is empty, the returned iterator will be equal to end().

Returns
An iterator to the first instance of the internal array.

Definition at line 470 of file dense_map.hpp.

◆ begin() [2/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::begin ( )
inlinenoexcept

Returns an iterator to the beginning.

If the array is empty, the returned iterator will be equal to end().

Returns
An iterator to the first instance of the internal array.

Definition at line 475 of file dense_map.hpp.

◆ begin() [3/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::begin ( const size_type  index)
inline

Returns an iterator to the beginning of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the beginning of the given bucket.

Definition at line 881 of file dense_map.hpp.

◆ begin() [4/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::begin ( const size_type  index) const
inline

Returns an iterator to the beginning of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the beginning of the given bucket.

Definition at line 872 of file dense_map.hpp.

◆ bucket()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::bucket ( const key_type key) const
inline

Returns the bucket for a given key.

Parameters
keyThe value of the key to examine.
Returns
The bucket for the given key.

Definition at line 942 of file dense_map.hpp.

◆ bucket_count()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::bucket_count ( ) const
inline

Returns the number of buckets.

Returns
The number of buckets.

Definition at line 916 of file dense_map.hpp.

◆ bucket_size()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::bucket_size ( const size_type  index) const
inline

Returns the number of elements in a given bucket.

Parameters
indexThe index of the bucket to examine.
Returns
The number of elements in the given bucket.

Definition at line 933 of file dense_map.hpp.

◆ cbegin() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::cbegin ( ) const
inlinenoexcept

Returns an iterator to the beginning.

If the array is empty, the returned iterator will be equal to end().

Returns
An iterator to the first instance of the internal array.

Definition at line 465 of file dense_map.hpp.

◆ cbegin() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::cbegin ( const size_type  index) const
inline

Returns an iterator to the beginning of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the beginning of the given bucket.

Definition at line 863 of file dense_map.hpp.

◆ cend() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::cend ( ) const
inlinenoexcept

Returns an iterator to the end.

Returns
An iterator to the element following the last instance of the internal array.

Definition at line 484 of file dense_map.hpp.

◆ cend() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::cend ( const size_type  index) const
inline

Returns an iterator to the end of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the end of the given bucket.

Definition at line 890 of file dense_map.hpp.

◆ clear()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::clear ( )
inlinenoexcept

Clears the container.

Definition at line 523 of file dense_map.hpp.

◆ contains() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
bool entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::contains ( const key_type key) const
inline

Checks if the container contains an element with a given key.

Parameters
keyKey value of an element to search for.
Returns
True if there is such an element, false otherwise.

Definition at line 841 of file dense_map.hpp.

◆ contains() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, bool > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::contains ( const Other &  key) const
inline

Checks if the container contains an element with a key that compares equivalent to a given value.

Template Parameters
OtherType of the key value of an element to search for.
Parameters
keyKey value of an element to search for.
Returns
True if there is such an element, false otherwise.

Definition at line 854 of file dense_map.hpp.

◆ count() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::count ( const key_type key) const
inline

Returns the number of elements matching a key (either 1 or 0).

Parameters
keyKey value of an element to search for.
Returns
Number of elements matching the key (either 1 or 0).

Definition at line 744 of file dense_map.hpp.

◆ count() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, size_type > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::count ( const Other &  key) const
inline

Returns the number of elements matching a key (either 1 or 0).

Template Parameters
OtherType of the key value of an element to search for.
Parameters
keyKey value of an element to search for.
Returns
Number of elements matching the key (either 1 or 0).

Definition at line 756 of file dense_map.hpp.

◆ emplace()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename... Args>
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::emplace ( Args &&...  args)
inline

Constructs an element in-place, if the key does not exist.

The element is also constructed when the container already has the key, in which case the newly constructed object is destroyed immediately.

Template Parameters
ArgsTypes of arguments to forward to the constructor of the element.
Parameters
argsArguments to forward to the constructor of the element.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.

Definition at line 602 of file dense_map.hpp.

◆ empty()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
bool entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::empty ( ) const
inlinenoexcept

Checks whether a container is empty.

Returns
True if the container is empty, false otherwise.

Definition at line 502 of file dense_map.hpp.

◆ end() [1/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::end ( ) const
inlinenoexcept

Returns an iterator to the end.

Returns
An iterator to the element following the last instance of the internal array.

Definition at line 489 of file dense_map.hpp.

◆ end() [2/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::end ( )
inlinenoexcept

Returns an iterator to the end.

Returns
An iterator to the element following the last instance of the internal array.

Definition at line 494 of file dense_map.hpp.

◆ end() [3/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::end ( const size_type  index)
inline

Returns an iterator to the end of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the end of the given bucket.

Definition at line 908 of file dense_map.hpp.

◆ end() [4/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_local_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::end ( const size_type  index) const
inline

Returns an iterator to the end of a given bucket.

Parameters
indexAn index of a bucket to access.
Returns
An iterator to the end of the given bucket.

Definition at line 899 of file dense_map.hpp.

◆ equal_range() [1/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
std::pair< iterator, iterator > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::equal_range ( const key_type key)
inline

Returns a range containing all elements with a given key.

Parameters
keyKey value of an element to search for.
Returns
A pair of iterators pointing to the first element and past the last element of the range.

Definition at line 802 of file dense_map.hpp.

◆ equal_range() [2/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
std::pair< const_iterator, const_iterator > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::equal_range ( const key_type key) const
inline

Returns a range containing all elements with a given key.

Parameters
keyKey value of an element to search for.
Returns
A pair of iterators pointing to the first element and past the last element of the range.

Definition at line 808 of file dense_map.hpp.

◆ equal_range() [3/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, std::pair< iterator, iterator > > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::equal_range ( const Other &  key)
inline

Returns a range containing all elements that compare equivalent to a given key.

Template Parameters
OtherType of an element to search for.
Parameters
keyKey value of an element to search for.
Returns
A pair of iterators pointing to the first element and past the last element of the range.

Definition at line 823 of file dense_map.hpp.

◆ equal_range() [4/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, std::pair< const_iterator, const_iterator > > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::equal_range ( const Other &  key) const
inline

Returns a range containing all elements with a given key.

Parameters
keyKey value of an element to search for.
Returns
A pair of iterators pointing to the first element and past the last element of the range.

Definition at line 831 of file dense_map.hpp.

◆ erase() [1/3]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::erase ( const key_type key)
inline

Removes the element associated with a given key.

Parameters
keyA key value of an element to remove.
Returns
Number of elements removed (either 0 or 1).

Definition at line 679 of file dense_map.hpp.

◆ erase() [2/3]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::erase ( const_iterator  first,
const_iterator  last 
)
inline

Removes the given elements from a container.

Parameters
firstAn iterator to the first element of the range of elements.
lastAn iterator past the last element of the range of elements.
Returns
An iterator following the last removed element.

Definition at line 664 of file dense_map.hpp.

◆ erase() [3/3]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::erase ( const_iterator  pos)
inline

Removes an element from a given position.

Parameters
posAn iterator to the element to remove.
Returns
An iterator following the removed element.

Definition at line 652 of file dense_map.hpp.

◆ find() [1/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::find ( const key_type key)
inline

Finds an element with a given key.

Parameters
keyKey value of an element to search for.
Returns
An iterator to an element with the given key. If no such element is found, a past-the-end iterator is returned.

Definition at line 766 of file dense_map.hpp.

◆ find() [2/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
const_iterator entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::find ( const key_type key) const
inline

Finds an element with a given key.

Parameters
keyKey value of an element to search for.
Returns
An iterator to an element with the given key. If no such element is found, a past-the-end iterator is returned.

Definition at line 771 of file dense_map.hpp.

◆ find() [3/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, iterator > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::find ( const Other &  key)
inline

Finds an element with a key that compares equivalent to a given key.

Template Parameters
OtherType of the key value of an element to search for.
Parameters
keyKey value of an element to search for.
Returns
An iterator to an element with the given key. If no such element is found, a past-the-end iterator is returned.

Definition at line 785 of file dense_map.hpp.

◆ find() [4/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Other >
std::enable_if_t< is_transparent_v< hasher > &&is_transparent_v< key_equal >, std::conditional_t< false, Other, const_iterator > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::find ( const Other &  key) const
inline

Finds an element with a given key.

Parameters
keyKey value of an element to search for.
Returns
An iterator to an element with the given key. If no such element is found, a past-the-end iterator is returned.

Definition at line 792 of file dense_map.hpp.

◆ get_allocator()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
constexpr allocator_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::get_allocator ( ) const
inlineconstexprnoexcept

Returns the associated allocator.

Returns
The associated allocator.

Definition at line 454 of file dense_map.hpp.

◆ hash_function()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
hasher entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::hash_function ( ) const
inline

Returns the function used to hash the keys.

Returns
The function used to hash the keys.

Definition at line 1010 of file dense_map.hpp.

◆ insert() [1/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Arg >
std::enable_if_t< std::is_constructible_v< value_type, Arg && >, std::pair< iterator, bool > > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert ( Arg &&  value)
inline

Inserts an element into the container, if the key does not exist.

Parameters
valueA key-value pair eventually convertible to the value type.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.
Template Parameters
ArgType of the key-value pair to insert into the container.

Definition at line 551 of file dense_map.hpp.

◆ insert() [2/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert ( const value_type value)
inline

Inserts an element into the container, if the key does not exist.

Parameters
valueA key-value pair eventually convertible to the value type.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.

Definition at line 536 of file dense_map.hpp.

◆ insert() [3/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename It >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert ( It  first,
It  last 
)
inline

Inserts elements into the container, if their keys do not exist.

Template Parameters
ItType of input iterator.
Parameters
firstAn iterator to the first element of the range of elements.
lastAn iterator past the last element of the range of elements.

Definition at line 562 of file dense_map.hpp.

◆ insert() [4/4]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert ( value_type &&  value)
inline

Inserts an element into the container, if the key does not exist.

Parameters
valueA key-value pair eventually convertible to the value type.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.

Definition at line 541 of file dense_map.hpp.

◆ insert_or_assign() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Arg >
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert_or_assign ( const key_type key,
Arg &&  value 
)
inline

Inserts an element into the container or assigns to the current element if the key already exists.

Template Parameters
ArgType of the value to insert or assign.
Parameters
keyA key used both to look up and to insert if not found.
valueA value to insert or assign.
Returns
A pair consisting of an iterator to the element and a bool denoting whether the insertion took place.

Definition at line 578 of file dense_map.hpp.

◆ insert_or_assign() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename Arg >
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::insert_or_assign ( key_type &&  key,
Arg &&  value 
)
inline

Inserts an element into the container or assigns to the current element if the key already exists.

Template Parameters
ArgType of the value to insert or assign.
Parameters
keyA key used both to look up and to insert if not found.
valueA value to insert or assign.
Returns
A pair consisting of an iterator to the element and a bool denoting whether the insertion took place.

Definition at line 584 of file dense_map.hpp.

◆ key_eq()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
key_equal entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::key_eq ( ) const
inline

Returns the function used to compare keys for equality.

Returns
The function used to compare keys for equality.

Definition at line 1018 of file dense_map.hpp.

◆ load_factor()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
float entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::load_factor ( ) const
inline

Returns the average number of elements per bucket.

Returns
The average number of elements per bucket.

Definition at line 950 of file dense_map.hpp.

◆ max_bucket_count()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::max_bucket_count ( ) const
inline

Returns the maximum number of buckets.

Returns
The maximum number of buckets.

Definition at line 924 of file dense_map.hpp.

◆ max_load_factor() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
float entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::max_load_factor ( ) const
inline

Returns the maximum average number of elements per bucket.

Returns
The maximum average number of elements per bucket.

Definition at line 958 of file dense_map.hpp.

◆ max_load_factor() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::max_load_factor ( const float  value)
inline

Sets the desired maximum average number of elements per bucket.

Parameters
valueA desired maximum average number of elements per bucket.

Definition at line 966 of file dense_map.hpp.

◆ max_size()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::max_size ( ) const
inlinenoexcept

Returns the maximum possible number of elements.

Returns
Maximum possible number of elements.

Definition at line 518 of file dense_map.hpp.

◆ operator=() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
dense_map & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::operator= ( const dense_map< Key, Type, Hash, KeyEqual, Allocator > &  )
default

Default copy assignment operator.

Returns
This container.

◆ operator=() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
dense_map & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::operator= ( dense_map< Key, Type, Hash, KeyEqual, Allocator > &&  ) &&
defaultnoexcept

Default move assignment operator.

Returns
This container.

◆ operator[]() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
mapped_type & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::operator[] ( const key_type key)
inline

Accesses or inserts a given element.

Parameters
keyA key of an element to find or insert.
Returns
A reference to the mapped value of the requested element.

Definition at line 726 of file dense_map.hpp.

◆ operator[]() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
mapped_type & entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::operator[] ( key_type &&  key)
inline

Accesses or inserts a given element.

Parameters
keyA key of an element to find or insert.
Returns
A reference to the mapped value of the requested element.

Definition at line 735 of file dense_map.hpp.

◆ rehash()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::rehash ( const size_type  cnt)
inline

Reserves at least the specified number of buckets and regenerates the hash table.

Parameters
cntNew number of buckets.

Definition at line 977 of file dense_map.hpp.

◆ reserve()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::reserve ( const size_type  cnt)
inline

Reserves space for at least the specified number of elements and regenerates the hash table.

Parameters
cntNew number of elements.

Definition at line 1001 of file dense_map.hpp.

◆ size()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
size_type entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::size ( ) const
inlinenoexcept

Returns the number of elements in a container.

Returns
Number of elements in a container.

Definition at line 510 of file dense_map.hpp.

◆ swap()

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
void entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::swap ( dense_map< Key, Type, Hash, KeyEqual, Allocator > &  other)
inline

Exchanges the contents with those of a given container.

Parameters
otherContainer to exchange the content with.

Definition at line 696 of file dense_map.hpp.

◆ try_emplace() [1/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename... Args>
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::try_emplace ( const key_type key,
Args &&...  args 
)
inline

Inserts in-place if the key does not exist, does nothing if the key exists.

Template Parameters
ArgsTypes of arguments to forward to the constructor of the element.
Parameters
keyA key used both to look up and to insert if not found.
argsArguments to forward to the constructor of the element.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.

Definition at line 637 of file dense_map.hpp.

◆ try_emplace() [2/2]

template<typename Key , typename Type , typename Hash , typename KeyEqual , typename Allocator >
template<typename... Args>
std::pair< iterator, bool > entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::try_emplace ( key_type &&  key,
Args &&...  args 
)
inline

Inserts in-place if the key does not exist, does nothing if the key exists.

Template Parameters
ArgsTypes of arguments to forward to the constructor of the element.
Parameters
keyA key used both to look up and to insert if not found.
argsArguments to forward to the constructor of the element.
Returns
A pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.

Definition at line 643 of file dense_map.hpp.


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