|
EnTT 4.0.0
|
Associative container for key-value pairs with unique keys. More...
#include <dense_map.hpp>
Public Types | |
| using | allocator_type = Allocator |
| Allocator type. | |
| using | key_type = Key |
| Key type of the container. | |
| using | mapped_type = Type |
| Mapped type of the container. | |
| using | value_type = stl::pair<const Key, Type> |
| Key-value type of the container. | |
| using | size_type = stl::size_t |
| Unsigned integer type. | |
| using | difference_type = stl::ptrdiff_t |
| Signed 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 | iterator = internal::dense_map_iterator<typename packed_container_type::pointer> |
| Input iterator type. | |
| using | const_iterator = internal::dense_map_iterator<typename packed_container_type::const_pointer> |
| Constant input iterator type. | |
| using | local_iterator = internal::dense_map_local_iterator<typename packed_container_type::pointer> |
| Input iterator type. | |
| using | const_local_iterator = internal::dense_map_local_iterator<typename packed_container_type::const_pointer> |
| 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=default | |
| Default move constructor. | |
| dense_map (dense_map &&other, const allocator_type &allocator) | |
| Allocator-extended move constructor. | |
| ~dense_map ()=default | |
| Default destructor. | |
| dense_map & | operator= (const dense_map &)=default |
| Default copy assignment operator. | |
| dense_map & | operator= (dense_map &&) noexcept=default |
| Default move assignment operator. | |
| void | swap (dense_map &other) noexcept |
| Exchanges the contents with those of a given container. | |
| 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. | |
| stl::pair< iterator, bool > | insert (const value_type &value) |
| Inserts an element into the container, if the key does not exist. | |
| stl::pair< iterator, bool > | insert (value_type &&value) |
| Inserts an element into the container, if the key does not exist. | |
| template<typename Arg> requires stl::constructible_from<value_type, Arg &&> | |
| stl::pair< iterator, bool > | insert (Arg &&value) |
| Inserts an element into the container, if the key does not exist. | |
| void | insert (stl::input_iterator auto first, stl::input_iterator auto last) |
| Inserts elements into the container, if their keys do not exist. | |
| template<typename Arg> | |
| stl::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> | |
| stl::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> | |
| stl::pair< iterator, bool > | emplace (Args &&...args) |
| Constructs an element in-place, if the key does not exist. | |
| template<typename... Args> | |
| stl::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> | |
| stl::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. | |
| mapped_type & | at (const key_type &key) |
| Accesses a given element with bounds checking. | |
| const mapped_type & | at (const key_type &key) const |
| Accesses a given element with bounds checking. | |
| mapped_type const & | at (const auto &key) const |
| Accesses a given element with bounds checking. | |
| mapped_type & | at (const auto &key) |
| Accesses a given element with bounds checking. | |
| mapped_type & | operator[] (const key_type &key) |
| Accesses or inserts a given element. | |
| mapped_type & | operator[] (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). | |
| size_type | count (const auto &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. | |
| iterator | find (const auto &key) |
| Finds an element with a key that compares equivalent to a given key. | |
| const_iterator | find (const auto &key) const |
| Finds an element with a given key. | |
| stl::pair< iterator, iterator > | equal_range (const key_type &key) |
| Returns a range containing all elements with a given key. | |
| stl::pair< const_iterator, const_iterator > | equal_range (const key_type &key) const |
| Returns a range containing all elements with a given key. | |
| stl::pair< iterator, iterator > | equal_range (const auto &key) |
| Returns a range containing all elements that compare equivalent to a given key. | |
| stl::pair< const_iterator, const_iterator > | equal_range (const auto &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. | |
| bool | contains (const auto &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. | |
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.
| Key | Key type of the associative container. |
| Type | Mapped type of the associative container. |
| Hash | Type of function to use to hash the keys. |
| KeyEqual | Type of function to use to compare the keys for equality. |
| Allocator | Type of allocator used to manage memory and elements. |
Definition at line 231 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::allocator_type = Allocator |
Allocator type.
Definition at line 317 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::const_iterator = internal::dense_map_iterator<typename packed_container_type::const_pointer> |
Constant input iterator type.
Definition at line 335 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::const_local_iterator = internal::dense_map_local_iterator<typename packed_container_type::const_pointer> |
Constant input iterator type.
Definition at line 339 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::difference_type = stl::ptrdiff_t |
Signed integer type.
Definition at line 327 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::hasher = Hash |
Type of function to use to hash the keys.
Definition at line 329 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::iterator = internal::dense_map_iterator<typename packed_container_type::pointer> |
Input iterator type.
Definition at line 333 of file dense_map.hpp.
| 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 331 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::key_type = Key |
Key type of the container.
Definition at line 319 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::local_iterator = internal::dense_map_local_iterator<typename packed_container_type::pointer> |
Input iterator type.
Definition at line 337 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::mapped_type = Type |
Mapped type of the container.
Definition at line 321 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::size_type = stl::size_t |
Unsigned integer type.
Definition at line 325 of file dense_map.hpp.
| using entt::dense_map< Key, Type, Hash, KeyEqual, Allocator >::value_type = stl::pair<const Key, Type> |
Key-value type of the container.
Definition at line 323 of file dense_map.hpp.
|
inline |
Default constructor.
Definition at line 342 of file dense_map.hpp.
|
inlineexplicit |
Constructs an empty container with a given allocator.
| allocator | The allocator to use. |
Definition at line 349 of file dense_map.hpp.
|
inline |
Constructs an empty container with a given allocator and user supplied minimal number of buckets.
| cnt | Minimal number of buckets. |
| allocator | The allocator to use. |
Definition at line 358 of file dense_map.hpp.
|
inline |
Constructs an empty container with a given allocator, hash function and user supplied minimal number of buckets.
| cnt | Minimal number of buckets. |
| hash | Hash function to use. |
| allocator | The allocator to use. |
Definition at line 368 of file dense_map.hpp.
|
inlineexplicit |
Constructs an empty container with a given allocator, hash function, compare function and user supplied minimal number of buckets.
| cnt | Minimal number of buckets. |
| hash | Hash function to use. |
| equal | Compare function to use. |
| allocator | The allocator to use. |
Definition at line 379 of file dense_map.hpp.
|
inline |
Allocator-extended copy constructor.
| other | The instance to copy from. |
| allocator | The allocator to use. |
Definition at line 393 of file dense_map.hpp.
|
inline |
Allocator-extended move constructor.
| other | The instance to move from. |
| allocator | The allocator to use. |
Definition at line 406 of file dense_map.hpp.
|
inlinenodiscard |
Accesses a given element with bounds checking.
| key | A key of an element to find. |
Definition at line 708 of file dense_map.hpp.
|
inlinenodiscard |
Accesses a given element with bounds checking.
| key | A key of an element to find. |
Definition at line 700 of file dense_map.hpp.
|
inlinenodiscard |
Accesses a given element with bounds checking.
| key | A key of an element to find. |
Definition at line 682 of file dense_map.hpp.
|
inlinenodiscard |
Accesses a given element with bounds checking.
| key | A key of an element to find. |
Definition at line 689 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the beginning.
If the array is empty, the returned iterator will be equal to end().
Definition at line 457 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the beginning.
If the array is empty, the returned iterator will be equal to end().
Definition at line 462 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the beginning of a given bucket.
| index | An index of a bucket to access. |
Definition at line 865 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the beginning of a given bucket.
| index | An index of a bucket to access. |
Definition at line 856 of file dense_map.hpp.
|
inlinenodiscard |
Returns the bucket for a given key.
| key | The value of the key to examine. |
Definition at line 926 of file dense_map.hpp.
|
inlinenodiscard |
Returns the number of buckets.
Definition at line 900 of file dense_map.hpp.
|
inlinenodiscard |
Returns the number of elements in a given bucket.
| index | The index of the bucket to examine. |
Definition at line 917 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the beginning.
If the array is empty, the returned iterator will be equal to end().
Definition at line 452 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the beginning of a given bucket.
| index | An index of a bucket to access. |
Definition at line 847 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the end.
Definition at line 471 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the end of a given bucket.
| index | An index of a bucket to access. |
Definition at line 874 of file dense_map.hpp.
|
inlinenoexcept |
Clears the container.
Definition at line 510 of file dense_map.hpp.
|
inlinenodiscard |
Checks if the container contains an element with a key that compares equivalent to a given value.
| key | Key value of an element to search for. |
Definition at line 837 of file dense_map.hpp.
|
inlinenodiscard |
Checks if the container contains an element with a given key.
| key | Key value of an element to search for. |
Definition at line 827 of file dense_map.hpp.
|
inlinenodiscard |
Returns the number of elements matching a key (either 1 or 0).
| key | Key value of an element to search for. |
Definition at line 747 of file dense_map.hpp.
|
inlinenodiscard |
Returns the number of elements matching a key (either 1 or 0).
| key | Key value of an element to search for. |
Definition at line 738 of file dense_map.hpp.
|
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.
| Args | Types of arguments to forward to the constructor of the element. |
| args | Arguments to forward to the constructor of the element. |
Definition at line 587 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Checks whether a container is empty.
Definition at line 489 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the end.
Definition at line 476 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns an iterator to the end.
Definition at line 481 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the end of a given bucket.
| index | An index of a bucket to access. |
Definition at line 892 of file dense_map.hpp.
|
inlinenodiscard |
Returns an iterator to the end of a given bucket.
| index | An index of a bucket to access. |
Definition at line 883 of file dense_map.hpp.
|
inlinenodiscard |
Returns a range containing all elements that compare equivalent to a given key.
| key | Key value of an element to search for. |
Definition at line 809 of file dense_map.hpp.
|
inlinenodiscard |
Returns a range containing all elements with a given key.
| key | Key value of an element to search for. |
Definition at line 816 of file dense_map.hpp.
|
inlinenodiscard |
Returns a range containing all elements with a given key.
| key | Key value of an element to search for. |
Definition at line 791 of file dense_map.hpp.
|
inlinenodiscard |
Returns a range containing all elements with a given key.
| key | Key value of an element to search for. |
Definition at line 797 of file dense_map.hpp.
|
inline |
Removes the element associated with a given key.
| key | A key value of an element to remove. |
Definition at line 664 of file dense_map.hpp.
|
inline |
Removes the given elements from a container.
| first | An iterator to the first element of the range of elements. |
| last | An iterator past the last element of the range of elements. |
Definition at line 649 of file dense_map.hpp.
|
inline |
Removes an element from a given position.
| pos | An iterator to the element to remove. |
Definition at line 637 of file dense_map.hpp.
|
inlinenodiscard |
Finds an element with a key that compares equivalent to a given key.
| key | Key value of an element to search for. |
Definition at line 774 of file dense_map.hpp.
|
inlinenodiscard |
Finds an element with a given key.
| key | Key value of an element to search for. |
Definition at line 780 of file dense_map.hpp.
|
inlinenodiscard |
Finds an element with a given key.
| key | Key value of an element to search for. |
Definition at line 758 of file dense_map.hpp.
|
inlinenodiscard |
Finds an element with a given key.
| key | Key value of an element to search for. |
Definition at line 763 of file dense_map.hpp.
|
inlinenodiscardconstexprnoexcept |
Returns the associated allocator.
Definition at line 441 of file dense_map.hpp.
|
inlinenodiscard |
Returns the function used to hash the keys.
Definition at line 994 of file dense_map.hpp.
|
inline |
Inserts an element into the container, if the key does not exist.
| value | A key-value pair eventually convertible to the value type. |
| Arg | Type of the key-value pair to insert into the container. |
Definition at line 538 of file dense_map.hpp.
|
inline |
Inserts an element into the container, if the key does not exist.
| value | A key-value pair eventually convertible to the value type. |
Definition at line 523 of file dense_map.hpp.
|
inline |
Inserts elements into the container, if their keys do not exist.
| first | An iterator to the first element of the range of elements. |
| last | An iterator past the last element of the range of elements. |
Definition at line 547 of file dense_map.hpp.
|
inline |
Inserts an element into the container, if the key does not exist.
| value | A key-value pair eventually convertible to the value type. |
Definition at line 528 of file dense_map.hpp.
|
inline |
Inserts an element into the container or assigns to the current element if the key already exists.
| Arg | Type of the value to insert or assign. |
| key | A key used both to look up and to insert if not found. |
| value | A value to insert or assign. |
Definition at line 563 of file dense_map.hpp.
|
inline |
Inserts an element into the container or assigns to the current element if the key already exists.
| Arg | Type of the value to insert or assign. |
| key | A key used both to look up and to insert if not found. |
| value | A value to insert or assign. |
Definition at line 569 of file dense_map.hpp.
|
inlinenodiscard |
Returns the function used to compare keys for equality.
Definition at line 1002 of file dense_map.hpp.
|
inlinenodiscard |
Returns the average number of elements per bucket.
Definition at line 934 of file dense_map.hpp.
|
inlinenodiscard |
Returns the maximum number of buckets.
Definition at line 908 of file dense_map.hpp.
|
inlinenodiscard |
Returns the maximum average number of elements per bucket.
Definition at line 942 of file dense_map.hpp.
|
inline |
Sets the desired maximum average number of elements per bucket.
| value | A desired maximum average number of elements per bucket. |
Definition at line 950 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns the maximum possible number of elements.
Definition at line 505 of file dense_map.hpp.
|
default |
Default copy assignment operator.
|
defaultnoexcept |
Default move assignment operator.
|
inlinenodiscard |
Accesses or inserts a given element.
| key | A key of an element to find or insert. |
Definition at line 720 of file dense_map.hpp.
|
inlinenodiscard |
Accesses or inserts a given element.
| key | A key of an element to find or insert. |
Definition at line 729 of file dense_map.hpp.
|
inline |
Reserves at least the specified number of buckets and regenerates the hash table.
| cnt | New number of buckets. |
Definition at line 961 of file dense_map.hpp.
|
inline |
Reserves space for at least the specified number of elements and regenerates the hash table.
| cnt | New number of elements. |
Definition at line 985 of file dense_map.hpp.
|
inlinenodiscardnoexcept |
Returns the number of elements in a container.
Definition at line 497 of file dense_map.hpp.
|
inlinenoexcept |
Exchanges the contents with those of a given container.
| other | Container to exchange the content with. |
Definition at line 430 of file dense_map.hpp.
|
inline |
Inserts in-place if the key does not exist, does nothing if the key exists.
| Args | Types of arguments to forward to the constructor of the element. |
| key | A key used both to look up and to insert if not found. |
| args | Arguments to forward to the constructor of the element. |
Definition at line 622 of file dense_map.hpp.
|
inline |
Inserts in-place if the key does not exist, does nothing if the key exists.
| Args | Types of arguments to forward to the constructor of the element. |
| key | A key used both to look up and to insert if not found. |
| args | Arguments to forward to the constructor of the element. |
Definition at line 628 of file dense_map.hpp.