8#ifndef INCLUDED_BDLC_FLATHASHMAP
9#define INCLUDED_BDLC_FLATHASHMAP
303#include <bdlscm_version.h>
335#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
336#include <bsl_initializer_list.h>
338#include <bsl_cstddef.h>
339#include <bsl_ostream.h>
340#include <bsl_utility.h>
342#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
348# define COMPILING_BDLC_FLATHASHMAP_H
350# undef COMPILING_BDLC_FLATHASHMAP_H
355#if defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
356#include <bsl_type_traits.h>
358 #ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
359 #error Rvalue references curiously absent despite native 'type_traits'.
374template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
378template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
382template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
392template <
class KEY,
class VALUE,
class ENTRY>
396#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
401 template <
class... ARGS>
412 template <
class KEY_TYPE>
419 static const KEY&
key(
const ENTRY& entry);
436template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
456 template <
class K,
class V,
class H,
class E>
530 template <
class INPUT_ITERATOR>
534 template <
class INPUT_ITERATOR>
539 template <
class INPUT_ITERATOR>
545 template <
class INPUT_ITERATOR>
553#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
571 FlatHashMap(bsl::initializer_list<value_type> values,
573 FlatHashMap(bsl::initializer_list<value_type> values,
576 FlatHashMap(bsl::initializer_list<value_type> values,
580 FlatHashMap(bsl::initializer_list<value_type> values,
632#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
660#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
661#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
668 template <
class LOOKUP_KEY>
670 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
671 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
686 VALUE&
at(
const KEY& key);
693 template <
class LOOKUP_KEY>
695 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
696 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
698 at(
const LOOKUP_KEY& key)
704 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
705 "FlatHashMap::at(LOOKUP_KEY): invalid key_value");
736 template <
class LOOKUP_KEY>
738 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
739 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
748#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
763 template <
class... ARGS>
784 template <
class... ARGS>
793 bsl::size_t
erase(
const KEY& key);
795#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
801 template <
class LOOKUP_KEY>
803 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
804 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
808 return d_impl.
erase(key);
842 template <
class LOOKUP_KEY>
844 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
845 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
854#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
855 template <
class VALUE_TYPE>
857#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
858 template <
class VALUE_TYPE>
870 template <
class VALUE_TYPE>
872 VALUE_TYPE&&>::value,
883#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
884 template <
class VALUE_TYPE>
886#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
887 template <
class VALUE_TYPE>
897 template <
class VALUE_TYPE>
899 VALUE_TYPE&&>::value,
921 template <
class INPUT_ITERATOR>
922 void insert(INPUT_ITERATOR first, INPUT_ITERATOR last);
924#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
930 void insert(bsl::initializer_list<value_type> values);
933#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
950 BloombergLP::bslmf::MovableRef<KEY> key, M&& obj);
957 template <
class LOOKUP_KEY,
class M>
959 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
960 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
966 iter->second = std::forward<M>(obj);
967 return make_pair(iter,
false);
978 template <
class MAPPED>
986 template <
class MAPPED>
988 BloombergLP::bslmf::MovableRef<KEY> key,
996 template <
class LOOKUP_KEY,
class MAPPED>
998 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
999 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1017 void rehash(bsl::size_t minimumCapacity);
1032 void reserve(bsl::size_t numEntries);
1038#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1039#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
1049 template<
class... ARGS>
1061 template <
class... ARGS>
1063 BloombergLP::bslmf::MovableRef<KEY> key,
1075 template <
class LOOKUP_KEY,
class... ARGS>
1077 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1078 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1080 try_emplace(LOOKUP_KEY&& key, ARGS&&... args)
1086 std::piecewise_construct,
1099 template<
class... ARGS>
1111 template <
class... ARGS>
1113 BloombergLP::bslmf::MovableRef<KEY> key,
1124 template <
class LOOKUP_KEY,
class... ARGS>
1126 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1127 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1135 std::piecewise_construct,
1136 std::forward_as_tuple(
1138 std::forward_as_tuple(
1173 const VALUE&
at(
const KEY& key)
const;
1181 template <
class LOOKUP_KEY>
1183 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1184 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1185 ,
const VALUE&>::type
1186 at(
const LOOKUP_KEY& key)
const
1191 if (iter ==
end()) {
1192 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
1193 "FlatHashMap::at(LOOKUP_KEY) const: invalid key_value");
1195 return iter->second;
1204 bool contains(
const KEY& key)
const;
1208 template <
class LOOKUP_KEY>
1210 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1211 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1224 bsl::size_t count(
const KEY& key)
const;
1230 template <
class LOOKUP_KEY>
1232 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1233 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1234 , bsl::size_t >::type
1239 return find(key) !=
end() ? 1 : 0;
1255 const KEY& key)
const;
1267 template <
class LOOKUP_KEY>
1269 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1270 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1287 template <
class LOOKUP_KEY>
1289 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1290 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1324 bsl::size_t
size()
const;
1361 bsl::ostream& print(bsl::ostream& stream,
1363 int spacesPerLevel = 4)
const;
1373template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1374bool operator==(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
1375 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
1382template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1383bool operator!=(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
1384 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
1392template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1402template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1415#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1416template <
class KEY,
class VALUE,
class ENTRY>
1417template <
class... ARGS>
1432template <
class KEY,
class VALUE,
class ENTRY>
1433template <
class KEY_TYPE>
1454template <
class KEY,
class VALUE,
class ENTRY>
1466template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1469: d_impl(0, HASH(), EQUAL())
1473template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1477: d_impl(0, HASH(), EQUAL(), basicAllocator)
1481template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1484: d_impl(capacity, HASH(), EQUAL())
1488template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1491 bsl::size_t capacity,
1493: d_impl(capacity, HASH(), EQUAL(), basicAllocator)
1497template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1500 bsl::size_t capacity,
1503: d_impl(capacity, hash, EQUAL(), basicAllocator)
1507template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1510 bsl::size_t capacity,
1514: d_impl(capacity, hash, equal, basicAllocator)
1518template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1519template <
class INPUT_ITERATOR>
1522 INPUT_ITERATOR first,
1523 INPUT_ITERATOR last,
1525: d_impl(0, HASH(), EQUAL(), basicAllocator)
1530template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1531template <
class INPUT_ITERATOR>
1534 INPUT_ITERATOR first,
1535 INPUT_ITERATOR last,
1536 bsl::size_t capacity,
1538: d_impl(capacity, HASH(), EQUAL(), basicAllocator)
1543template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1544template <
class INPUT_ITERATOR>
1547 INPUT_ITERATOR first,
1548 INPUT_ITERATOR last,
1549 bsl::size_t capacity,
1552: d_impl(capacity, hash, EQUAL(), basicAllocator)
1557template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1558template <
class INPUT_ITERATOR>
1561 INPUT_ITERATOR first,
1562 INPUT_ITERATOR last,
1563 bsl::size_t capacity,
1567: d_impl(capacity, hash, equal, basicAllocator)
1572#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1573template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1576 bsl::initializer_list<value_type> values,
1587template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1590 bsl::initializer_list<value_type> values,
1591 bsl::size_t capacity,
1593: FlatHashMap(values.begin(),
1602template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1605 bsl::initializer_list<value_type> values,
1606 bsl::size_t capacity,
1609: FlatHashMap(values.
begin(),
1618template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1621 bsl::initializer_list<value_type> values,
1622 bsl::size_t capacity,
1626: FlatHashMap(values.
begin(),
1636template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1641: d_impl(original.d_impl, basicAllocator)
1645template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1649: d_impl(
bslmf::MovableRefUtil::move(
1650 bslmf::MovableRefUtil::access(original).d_impl))
1654template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1659: d_impl(
bslmf::MovableRefUtil::move(
1660 bslmf::MovableRefUtil::access(original).d_impl),
1665template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1672template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1677 d_impl = rhs.d_impl;
1682template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1695#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1696template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1700 bsl::initializer_list<value_type> values)
1715template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1719 return d_impl[key].second;
1722template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1729template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1735 if (node == d_impl.
end()) {
1736 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
1737 "FlatHashMap<...>::at(key_type): invalid key value");
1740 return node->second;
1743template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1751template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1759#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1760template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1761template <
class... ARGS>
1769template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1770template <
class... ARGS>
1781template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1784 return d_impl.
erase(key);
1787template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1794 return d_impl.
erase(position);
1797template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1807 return d_impl.
erase(position);
1810template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1815 return d_impl.
erase(first, last);
1818template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1823 return d_impl.
find(key);
1826template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1827template <
class INPUT_ITERATOR>
1829 INPUT_ITERATOR last)
1831 d_impl.
insert(first, last);
1834#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1835template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1836template <
class MAPPED>
1843 if (iter != end()) {
1844 iter->second = std::forward<MAPPED>(obj);
1845 return make_pair(iter,
false);
1850template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1851template <
class MAPPED>
1855 BloombergLP::bslmf::MovableRef<KEY> key,
1858 const KEY& lvalue = key;
1860 if (iter != end()) {
1861 iter->second = std::forward<MAPPED>(obj);
1862 return make_pair(iter,
false);
1868template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1869template <
class MAPPED>
1876 return insert_or_assign(key,
1880template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1881template <
class MAPPED>
1886 BloombergLP::bslmf::MovableRef<KEY> key,
1889 const KEY& lvalue = key;
1895#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1896template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1898 bsl::initializer_list<value_type> values)
1900 insert(values.begin(), values.end());
1904template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1908 d_impl.
rehash(minimumCapacity);
1911template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1918template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1925#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1926#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
1927template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1928template<
class... ARGS>
1936 std::piecewise_construct,
1937 std::forward_as_tuple(key),
1941template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1942template <
class... ARGS>
1944FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
1945 BloombergLP::bslmf::MovableRef<KEY> key,
1950 std::piecewise_construct,
1955template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1956template<
class... ARGS>
1958FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
1964 std::piecewise_construct,
1965 std::forward_as_tuple(key),
1970template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1971template <
class... ARGS>
1973FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
1974 BloombergLP::bslmf::MovableRef<KEY> key,
1979 std::piecewise_construct,
1989template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1994 return d_impl.
begin();
1997template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2002 return d_impl.
end();
2007template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2013 d_impl.
swap(other.d_impl);
2017template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2023 if (node == d_impl.
end()) {
2024 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
2025 "FlatHashMap<...>::at(key_type) const: invalid key value");
2028 return node->second;
2031template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2038template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2045template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2049 return d_impl.
count(key);
2052template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2056 return d_impl.
empty();
2059template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2067template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2072 return d_impl.
find(key);
2075template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2082template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2089template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2096template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2103template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2107 return d_impl.
size();
2112template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2117 return d_impl.
begin();
2119template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2127template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2132 return d_impl.
cend();
2135template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2140 return d_impl.
end();
2145template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2152template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2154 bsl::ostream& stream,
2156 int spacesPerLevel)
const
2167 while (iter != end()) {
2180template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2183 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& rhs)
2185 return lhs.d_impl == rhs.d_impl;
2188template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2191 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& rhs)
2193 return lhs.d_impl !=
rhs.d_impl;
2196template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2199 bsl::ostream& stream,
2200 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& map)
2202 return map.
print(stream, 0, -1);
2206template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2208void bdlc::swap(FlatHashMap<KEY, VALUE, HASH, EQUAL>& a,
2209 FlatHashMap<KEY, VALUE, HASH, EQUAL>& b)
2220template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2229template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlc_flathashmap.h:437
HASH hasher
Definition bdlc_flathashmap.h:468
const value_type * const_pointer
Definition bdlc_flathashmap.h:472
value_type * pointer
Definition bdlc_flathashmap.h:471
bsl::ptrdiff_t difference_type
Definition bdlc_flathashmap.h:466
friend void swap(FlatHashMap< K, V, H, E > &, FlatHashMap< K, V, H, E > &)
bsl::pair< iterator, bool > insert_or_assign(BloombergLP::bslmf::MovableRef< KEY > key, M &&obj)
const value_type & const_reference
Definition bdlc_flathashmap.h:470
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, const_iterator >::type find(const LOOKUP_KEY &key) const
Definition bdlc_flathashmap.h:1292
void clear()
Definition bdlc_flathashmap.h:1746
VALUE & at(const KEY &key)
Definition bdlc_flathashmap.h:1731
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bsl::pair< iterator, bool > >::type insert_or_assign(LOOKUP_KEY &&key, M &&obj)
Definition bdlc_flathashmap.h:962
EQUAL key_eq() const
Definition bdlc_flathashmap.h:2084
iterator find(const KEY &key)
Definition bdlc_flathashmap.h:1821
bool contains(const KEY &key) const
Definition bdlc_flathashmap.h:2040
ImplType::const_iterator const_iterator
Definition bdlc_flathashmap.h:474
bsl::enable_if< bsl::is_convertible< VALUE_TYPE, value_type >::value, iterator >::type insert(const_iterator, BSLS_COMPILERFEATURES_FORWARD_REF(VALUE_TYPE) value)
Definition bdlc_flathashmap.h:902
bsl::pair< iterator, bool > insert_or_assign(const KEY &key, M &&obj)
bool empty() const
Definition bdlc_flathashmap.h:2054
const_iterator cbegin() const
Definition bdlc_flathashmap.h:2122
bsl::size_t size() const
Return the number of elements in this map.
Definition bdlc_flathashmap.h:2105
bsl::enable_if< bsl::is_convertible< VALUE_TYPE, value_type >::value, bsl::pair< iterator, bool > >::type insert(BSLS_COMPILERFEATURES_FORWARD_REF(VALUE_TYPE) value)
Definition bdlc_flathashmap.h:875
void rehash(bsl::size_t minimumCapacity)
Definition bdlc_flathashmap.h:1906
bslma::Allocator * allocator() const
Return the allocator used by this flat hash map to supply memory.
Definition bdlc_flathashmap.h:2147
bsl::pair< iterator, bool > emplace(ARGS &&... args)
bsl::pair< iterator, iterator > equal_range(const KEY &key)
Definition bdlc_flathashmap.h:1754
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlc_flathashmap.h:2153
const_iterator cend() const
Definition bdlc_flathashmap.h:2130
void reserve(bsl::size_t numEntries)
Definition bdlc_flathashmap.h:1913
float load_factor() const
Definition bdlc_flathashmap.h:2091
HASH hash_function() const
Definition bdlc_flathashmap.h:2077
~FlatHashMap()
Destroy this object and each of its elements.
Definition bdlc_flathashmap.h:1667
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bsl::pair< const_iterator, const_iterator > >::type equal_range(const LOOKUP_KEY &key) const
Definition bdlc_flathashmap.h:1272
bsl::size_t erase(const KEY &key)
Definition bdlc_flathashmap.h:1782
iterator begin()
Definition bdlc_flathashmap.h:1992
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, VALUE & >::type at(const LOOKUP_KEY &key)
Definition bdlc_flathashmap.h:698
FlatHashMap & operator=(const FlatHashMap &rhs)
Definition bdlc_flathashmap.h:1675
EQUAL key_compare
Definition bdlc_flathashmap.h:467
KEY key_type
Definition bdlc_flathashmap.h:463
FlatHashMap()
Definition bdlc_flathashmap.h:1468
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bsl::size_t >::type erase(LOOKUP_KEY &&key)
Definition bdlc_flathashmap.h:806
VALUE & operator[](const KEY &key)
Definition bdlc_flathashmap.h:1717
ImplType::iterator iterator
Definition bdlc_flathashmap.h:473
float max_load_factor() const
Definition bdlc_flathashmap.h:2098
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bsl::size_t >::type count(const LOOKUP_KEY &key) const
Definition bdlc_flathashmap.h:1235
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, constVALUE & >::type at(const LOOKUP_KEY &key) const
Definition bdlc_flathashmap.h:1186
value_type & reference
Definition bdlc_flathashmap.h:469
void reset()
Definition bdlc_flathashmap.h:1920
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bool >::type contains(const LOOKUP_KEY &key) const
Definition bdlc_flathashmap.h:1213
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, iterator >::type find(const LOOKUP_KEY &key)
Definition bdlc_flathashmap.h:847
bsl::size_t capacity() const
Definition bdlc_flathashmap.h:2033
iterator emplace_hint(const_iterator hint, ARGS &&... args)
Definition bdlc_flathashmap.h:1773
bsl::size_t count(const KEY &key) const
Definition bdlc_flathashmap.h:2047
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, iterator >::type insert_or_assign(const_iterator, LOOKUP_KEY &&key, MAPPED &&obj)
Definition bdlc_flathashmap.h:1001
VALUE mapped_type
Definition bdlc_flathashmap.h:464
bsl::pair< typename bsl::add_const< KEY >::type, VALUE > value_type
Definition bdlc_flathashmap.h:461
bsl::enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, bsl::pair< iterator, iterator > >::type equal_range(const LOOKUP_KEY &key)
Definition bdlc_flathashmap.h:741
iterator end()
Definition bdlc_flathashmap.h:2000
bsl::size_t size_type
Definition bdlc_flathashmap.h:465
Definition bdlc_flathashtable.h:326
void clear()
Definition bdlc_flathashtable.h:1875
bsl::size_t erase(const KEY &key)
Definition bdlc_flathashtable.h:1927
float max_load_factor() const
Definition bdlc_flathashtable.h:2404
const_iterator cbegin() const
Definition bdlc_flathashtable.h:2440
void swap(FlatHashTable &other)
Definition bdlc_flathashtable.h:2266
bsl::pair< iterator, bool > insert(const ENTRY &entry)
Definition bdlc_flathashtable.h:2050
void reset()
Definition bdlc_flathashtable.h:2154
bsl::pair< iterator, bool > emplace(ARGS &&... args)
iterator find(const KEY &key)
Definition bdlc_flathashtable.h:2036
iterator end()
Definition bdlc_flathashtable.h:2257
bool empty() const
Definition bdlc_flathashtable.h:2318
bsl::pair< iterator, bool > try_emplace(const KEY &key, ARGS &&... args)
bslma::Allocator * allocator() const
Return the allocator used by this hash table to supply memory.
Definition bdlc_flathashtable.h:2466
bsl::size_t capacity() const
Definition bdlc_flathashtable.h:2284
bslstl::ForwardIterator< const bsl::pair< KEY, VALUE >, IteratorImp > const_iterator
Definition bdlc_flathashtable.h:343
bslstl::ForwardIterator< bsl::pair< KEY, VALUE >, IteratorImp > iterator
Definition bdlc_flathashtable.h:341
EQUAL key_eq() const
Definition bdlc_flathashtable.h:2380
bool contains(const KEY &key) const
Definition bdlc_flathashtable.h:2291
iterator begin()
Definition bdlc_flathashtable.h:2240
void reserve(bsl::size_t numEntries)
Definition bdlc_flathashtable.h:2135
const_iterator cend() const
Definition bdlc_flathashtable.h:2448
bsl::size_t size() const
Return the number of entries in this table.
Definition bdlc_flathashtable.h:2412
bsl::size_t count(const KEY &key) const
Definition bdlc_flathashtable.h:2310
HASH hash_function() const
Definition bdlc_flathashtable.h:2373
float load_factor() const
Definition bdlc_flathashtable.h:2391
void rehash(bsl::size_t minimumCapacity)
Definition bdlc_flathashtable.h:2114
bsl::pair< iterator, iterator > equal_range(const KEY &key)
Definition bdlc_flathashtable.h:1894
Definition bslstl_pair.h:1280
static void swap(T *a, T *b)
Definition bslalg_swaputil.h:182
Definition bslh_fibonaccibadhashwrapper.h:165
Definition bslim_printer.h:604
void printValue(const TYPE &data) const
Definition bslim_printer.h:1240
void end(bool suppressBracket=false) const
void start(bool suppressBracket=false) const
Definition bslma_allocator.h:545
Definition bslma_destructorguard.h:132
Definition bslmf_movableref.h:752
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlc_bitarray.h:506
void swap(BitArray &a, BitArray &b)
bool operator==(const BitArray &lhs, const BitArray &rhs)
bool operator!=(const BitArray &lhs, const BitArray &rhs)
BitArray operator<<(const BitArray &array, bsl::size_t numBits)
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
T::iterator begin(T &container)
Definition bslstl_iterator.h:1593
ALLOCATOR & lhs
Definition bslstl_string.h:3917
T::iterator end(T &container)
Definition bslstl_iterator.h:1621
Definition bdlc_flathashmap.h:2218
Definition baljsn_encoder_testtypes.h:76
Definition bdlbb_blob.h:579
Definition bdlc_flathashmap.h:394
static void constructFromKey(ENTRY *entry, bslma::Allocator *allocator, BSLS_COMPILERFEATURES_FORWARD_REF(KEY_TYPE) key)
Definition bdlc_flathashmap.h:1435
static const KEY & key(const ENTRY &entry)
Return the key of the specified entry.
Definition bdlc_flathashmap.h:1456
static void construct(ENTRY *entry, bslma::Allocator *allocator, ARGS &&... args)
Definition bdlc_flathashmap.h:1419
Definition bslmf_enableif.h:530
Definition bslstl_equalto.h:316
Definition bslalg_hasstliterators.h:99
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1244
Definition bslma_usesbslmaallocator.h:344
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1067
Definition bsls_objectbuffer.h:277
TYPE * address()
Definition bsls_objectbuffer.h:335
TYPE & object()
Definition bsls_objectbuffer.h:352