11#ifndef INCLUDED_BSLSTL_UNORDEREDMAP_CPP03
12#define INCLUDED_BSLSTL_UNORDEREDMAP_CPP03
63#ifdef COMPILING_BSLSTL_UNORDEREDMAP_H
105 typedef BloombergLP::bslstl::UnorderedMapKeyConfiguration<
const KEY,
111 typedef BloombergLP::bslstl::HashTable<ListConfiguration,
114 ALLOCATOR> HashTable;
118 typedef BloombergLP::bslalg::BidirectionalLink HashTableLink;
122 typedef typename HashTable::NodeType HashTableNode;
126 typedef BloombergLP::bslmf::MovableRefUtil MoveUtil;
129 template <
class KEY2,
135 const unordered_map<KEY2, VALUE2, HASH2, EQUAL2, ALLOCATOR2>&,
136 const unordered_map<KEY2, VALUE2, HASH2, EQUAL2, ALLOCATOR2>&);
157 typedef BloombergLP::bslstl::HashTableIterator<
159 typedef BloombergLP::bslstl::HashTableIterator<
161 typedef BloombergLP::bslstl::HashTableBucketIterator<
163 typedef BloombergLP::bslstl::HashTableBucketIterator<
175 const HASH& hashFunction = HASH(),
176 const EQUAL& keyEqual = EQUAL(),
177 const ALLOCATOR& basicAllocator = ALLOCATOR());
179 const HASH& hashFunction,
180 const ALLOCATOR& basicAllocator);
182 const ALLOCATOR& basicAllocator);
243 template <
class INPUT_ITERATOR>
247 const HASH& hashFunction = HASH(),
248 const EQUAL& keyEqual = EQUAL(),
249 const ALLOCATOR& basicAllocator = ALLOCATOR());
250 template <
class INPUT_ITERATOR>
254 const HASH& hashFunction,
255 const ALLOCATOR& basicAllocator);
256 template <
class INPUT_ITERATOR>
260 const ALLOCATOR& basicAllocator);
261 template <
class INPUT_ITERATOR>
264 const ALLOCATOR& basicAllocator);
266#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
267# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
269 class = bsl::enable_if_t<std::is_invocable_v<HASH, const KEY &>>,
270 class = bsl::enable_if_t<
271 std::is_invocable_v<EQUAL, const KEY &, const KEY &>>,
272 class = bsl::enable_if_t< bsl::IsStdAllocator_v<ALLOCATOR>>
276 std::initializer_list<value_type> values,
277 size_type initialNumBuckets = 0,
278 const HASH& hashFunction = HASH(),
279 const EQUAL& keyEqual = EQUAL(),
280 const ALLOCATOR& basicAllocator = ALLOCATOR());
281# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
283 class = bsl::enable_if_t<std::is_invocable_v<HASH, const KEY &>>,
284 class = bsl::enable_if_t< bsl::IsStdAllocator_v<ALLOCATOR>>
288 size_type initialNumBuckets,
289 const HASH& hashFunction,
290 const ALLOCATOR& basicAllocator);
291# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
293 class = bsl::enable_if_t< bsl::IsStdAllocator_v<ALLOCATOR>>
297 size_type initialNumBuckets,
298 const ALLOCATOR& basicAllocator);
299# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
328 class = bsl::enable_if_t< bsl::IsStdAllocator_v<ALLOCATOR>>
332 const ALLOCATOR& basicAllocator);
350 const unordered_map& original,
351 const typename type_identity<ALLOCATOR>::type& basicAllocator);
362 BloombergLP::bslmf::MovableRef<unordered_map> original);
373 BloombergLP::bslmf::MovableRef<unordered_map> original,
374 const typename type_identity<ALLOCATOR>::type& basicAllocator);
405 operator=(BloombergLP::bslmf::MovableRef<unordered_map> rhs)
407 AllocatorTraits::is_always_equal::value &&
408 std::is_nothrow_move_assignable<HASH>::value &&
409 std::is_nothrow_move_assignable<EQUAL>::value);
411#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
416 unordered_map& operator=(std::initializer_list<value_type> rhs);
427 typename add_lvalue_reference<VALUE>::type operator[](const key_type& key);
437 typename add_lvalue_reference<VALUE>::type operator[](
438 BloombergLP::bslmf::MovableRef<key_type> key);
444 typename add_lvalue_reference<VALUE>::type
at(const key_type& key);
477#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
480#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
481#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT 10
483#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A
484#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
486#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 0
491#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 1
492 template <class Args_01>
494 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01);
497#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 2
498 template <class Args_01,
501 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
502 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02);
505#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 3
506 template <class Args_01,
510 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
511 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
512 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03);
515#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 4
516 template <class Args_01,
521 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
522 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
523 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
524 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04);
527#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 5
528 template <class Args_01,
534 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
535 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
536 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
537 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
538 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05);
541#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 6
542 template <class Args_01,
549 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
550 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
551 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
552 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
553 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
554 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06);
557#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 7
558 template <class Args_01,
566 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
567 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
568 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
569 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
570 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
571 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
572 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07);
575#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 8
576 template <class Args_01,
585 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
586 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
587 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
588 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
589 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
590 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
591 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
592 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08);
595#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 9
596 template <class Args_01,
606 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
607 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
608 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
609 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
610 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
611 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
612 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
613 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08,
614 BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) args_09);
617#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 10
618 template <class Args_01,
629 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
630 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
631 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
632 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
633 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
634 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
635 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
636 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08,
637 BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) args_09,
638 BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) args_10);
642#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 0
646#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 1
647 template <class Args_01>
649 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01);
652#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 2
653 template <class Args_01,
656 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
657 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02);
660#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 3
661 template <class Args_01,
665 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
666 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
667 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03);
670#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 4
671 template <class Args_01,
676 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
677 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
678 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
679 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04);
682#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 5
683 template <class Args_01,
689 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
690 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
691 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
692 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
693 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05);
696#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 6
697 template <class Args_01,
704 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
705 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
706 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
707 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
708 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
709 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06);
712#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 7
713 template <class Args_01,
721 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
722 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
723 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
724 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
725 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
726 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
727 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07);
730#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 8
731 template <class Args_01,
740 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
741 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
742 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
743 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
744 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
745 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
746 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
747 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08);
750#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 9
751 template <class Args_01,
761 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
762 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
763 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
764 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
765 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
766 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
767 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
768 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08,
769 BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) args_09);
772#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_A >= 10
773 template <class Args_01,
784 BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) args_01,
785 BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) args_02,
786 BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) args_03,
787 BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) args_04,
788 BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) args_05,
789 BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) args_06,
790 BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) args_07,
791 BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) args_08,
792 BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) args_09,
793 BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) args_10);
799 template <class... Args>
801 BSLS_COMPILERFEATURES_FORWARD_REF(Args)... args);
803 template <class... Args>
805 BSLS_COMPILERFEATURES_FORWARD_REF(Args)... args);
848 template <class LOOKUP_KEY>
850 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
851 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
853 find(const LOOKUP_KEY& key)
856 return iterator(d_impl.find(key));
880#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
881 template <
class ALT_VALUE_TYPE>
883#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
884 template <
class ALT_VALUE_TYPE>
885 typename enable_if<is_convertible<ALT_VALUE_TYPE, value_type>::value,
886 pair<iterator, bool> >::type
903 template <
class ALT_VALUE_TYPE>
904 typename enable_if<std::is_constructible<
value_type,
905 ALT_VALUE_TYPE&&>::value,
906 pair<iterator, bool> >::type
915 bool isInsertedFlag =
false;
917 HashTableLink *result = d_impl.insertIfMissing(
921 return ResultType(
iterator(result), isInsertedFlag);
941#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
942 template <
class ALT_VALUE_TYPE>
944#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
945 template <
class ALT_VALUE_TYPE>
946 typename enable_if<is_convertible<ALT_VALUE_TYPE, value_type>::value,
966 template <
class ALT_VALUE_TYPE>
967 typename enable_if<std::is_constructible<
value_type,
968 ALT_VALUE_TYPE&&>::value,
989 HashTableLink *result = d_impl.insertIfMissing(
1008 template <
class INPUT_ITERATOR>
1009 void insert(INPUT_ITERATOR first, INPUT_ITERATOR last);
1011#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1017 void insert(std::initializer_list<value_type> values);
1020#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1023#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
1024#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT 10
1026#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_B
1027#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_B BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
1029 template <
class BDE_OTHER_TYPE>
1033 template <
class BDE_OTHER_TYPE>
1035 BloombergLP::bslmf::MovableRef<KEY> key,
1038 template <
class BDE_OTHER_TYPE>
1043 template <
class BDE_OTHER_TYPE>
1045 BloombergLP::bslmf::MovableRef<KEY> key,
1050 template <
class BDE_OTHER_TYPE>
1054 template <
class BDE_OTHER_TYPE>
1056 BloombergLP::bslmf::MovableRef<KEY> key,
1059 template <
class BDE_OTHER_TYPE>
1064 template <
class BDE_OTHER_TYPE>
1066 BloombergLP::bslmf::MovableRef<KEY> key,
1084 template <
class LOOKUP_KEY>
1086 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1087 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
1088 pair<iterator, iterator> >::type
1093 HashTableLink *first = d_impl.find(key);
1149 AllocatorTraits::is_always_equal::value &&
1150 bsl::is_nothrow_swappable<HASH>::value &&
1151 bsl::is_nothrow_swappable<EQUAL>::value);
1153#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1156#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
1157#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT 10
1159#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C
1160#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
1162#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
1166#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
1167 template <
class Args_01>
1172#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
1173 template <
class Args_01,
1180#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
1181 template <
class Args_01,
1190#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
1191 template <
class Args_01,
1202#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
1203 template <
class Args_01,
1216#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
1217 template <
class Args_01,
1232#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
1233 template <
class Args_01,
1250#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
1251 template <
class Args_01,
1270#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
1271 template <
class Args_01,
1292#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
1293 template <
class Args_01,
1317#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
1319 BloombergLP::bslmf::MovableRef<KEY> key);
1322#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
1323 template <
class Args_01>
1325 BloombergLP::bslmf::MovableRef<KEY> key,
1329#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
1330 template <
class Args_01,
1333 BloombergLP::bslmf::MovableRef<KEY> key,
1338#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
1339 template <
class Args_01,
1343 BloombergLP::bslmf::MovableRef<KEY> key,
1349#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
1350 template <
class Args_01,
1355 BloombergLP::bslmf::MovableRef<KEY> key,
1362#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
1363 template <
class Args_01,
1369 BloombergLP::bslmf::MovableRef<KEY> key,
1377#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
1378 template <
class Args_01,
1385 BloombergLP::bslmf::MovableRef<KEY> key,
1394#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
1395 template <
class Args_01,
1403 BloombergLP::bslmf::MovableRef<KEY> key,
1413#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
1414 template <
class Args_01,
1423 BloombergLP::bslmf::MovableRef<KEY> key,
1434#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
1435 template <
class Args_01,
1445 BloombergLP::bslmf::MovableRef<KEY> key,
1457#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
1458 template <
class Args_01,
1469 BloombergLP::bslmf::MovableRef<KEY> key,
1483#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
1484 template<
class LOOKUP_KEY>
1486 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1487 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1492 pair<iterator, bool> >::type
1496 bool isInsertedFlag =
false;
1497 HashTableLink *result = d_impl.tryEmplace(
1502 return ResultType(
iterator(result), isInsertedFlag);
1506#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
1507 template<
class LOOKUP_KEY,
class Args_01>
1509 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1510 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1515 pair<iterator, bool> >::type
1520 bool isInsertedFlag =
false;
1521 HashTableLink *result = d_impl.tryEmplace(
1527 return ResultType(
iterator(result), isInsertedFlag);
1531#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
1532 template<
class LOOKUP_KEY,
class Args_01,
1535 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1536 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1541 pair<iterator, bool> >::type
1547 bool isInsertedFlag =
false;
1548 HashTableLink *result = d_impl.tryEmplace(
1555 return ResultType(
iterator(result), isInsertedFlag);
1559#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
1560 template<
class LOOKUP_KEY,
class Args_01,
1564 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1565 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1570 pair<iterator, bool> >::type
1577 bool isInsertedFlag =
false;
1578 HashTableLink *result = d_impl.tryEmplace(
1586 return ResultType(
iterator(result), isInsertedFlag);
1590#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
1591 template<
class LOOKUP_KEY,
class Args_01,
1596 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1597 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1602 pair<iterator, bool> >::type
1610 bool isInsertedFlag =
false;
1611 HashTableLink *result = d_impl.tryEmplace(
1620 return ResultType(
iterator(result), isInsertedFlag);
1624#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
1625 template<
class LOOKUP_KEY,
class Args_01,
1631 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1632 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1637 pair<iterator, bool> >::type
1646 bool isInsertedFlag =
false;
1647 HashTableLink *result = d_impl.tryEmplace(
1657 return ResultType(
iterator(result), isInsertedFlag);
1661#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
1662 template<
class LOOKUP_KEY,
class Args_01,
1669 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1670 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1675 pair<iterator, bool> >::type
1685 bool isInsertedFlag =
false;
1686 HashTableLink *result = d_impl.tryEmplace(
1697 return ResultType(
iterator(result), isInsertedFlag);
1701#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
1702 template<
class LOOKUP_KEY,
class Args_01,
1710 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1711 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1716 pair<iterator, bool> >::type
1727 bool isInsertedFlag =
false;
1728 HashTableLink *result = d_impl.tryEmplace(
1740 return ResultType(
iterator(result), isInsertedFlag);
1744#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
1745 template<
class LOOKUP_KEY,
class Args_01,
1754 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1755 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1760 pair<iterator, bool> >::type
1772 bool isInsertedFlag =
false;
1773 HashTableLink *result = d_impl.tryEmplace(
1786 return ResultType(
iterator(result), isInsertedFlag);
1790#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
1791 template<
class LOOKUP_KEY,
class Args_01,
1801 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1802 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1807 pair<iterator, bool> >::type
1820 bool isInsertedFlag =
false;
1821 HashTableLink *result = d_impl.tryEmplace(
1835 return ResultType(
iterator(result), isInsertedFlag);
1839#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
1840 template<
class LOOKUP_KEY,
class Args_01,
1851 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
1852 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
1857 pair<iterator, bool> >::type
1871 bool isInsertedFlag =
false;
1872 HashTableLink *result = d_impl.tryEmplace(
1887 return ResultType(
iterator(result), isInsertedFlag);
1892#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
1897#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
1898 template<
class Args_01>
1904#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
1905 template<
class Args_01,
1913#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
1914 template<
class Args_01,
1924#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
1925 template<
class Args_01,
1937#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
1938 template<
class Args_01,
1952#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
1953 template<
class Args_01,
1969#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
1970 template<
class Args_01,
1988#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
1989 template<
class Args_01,
2009#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
2010 template<
class Args_01,
2032#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
2033 template<
class Args_01,
2058#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
2060 BloombergLP::bslmf::MovableRef<KEY> key);
2063#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
2064 template <
class Args_01>
2066 BloombergLP::bslmf::MovableRef<KEY> key,
2070#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
2071 template <
class Args_01,
2074 BloombergLP::bslmf::MovableRef<KEY> key,
2079#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
2080 template <
class Args_01,
2084 BloombergLP::bslmf::MovableRef<KEY> key,
2090#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
2091 template <
class Args_01,
2096 BloombergLP::bslmf::MovableRef<KEY> key,
2103#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
2104 template <
class Args_01,
2110 BloombergLP::bslmf::MovableRef<KEY> key,
2118#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
2119 template <
class Args_01,
2126 BloombergLP::bslmf::MovableRef<KEY> key,
2135#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
2136 template <
class Args_01,
2144 BloombergLP::bslmf::MovableRef<KEY> key,
2154#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
2155 template <
class Args_01,
2164 BloombergLP::bslmf::MovableRef<KEY> key,
2175#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
2176 template <
class Args_01,
2186 BloombergLP::bslmf::MovableRef<KEY> key,
2198#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
2199 template <
class Args_01,
2210 BloombergLP::bslmf::MovableRef<KEY> key,
2224#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 0
2225 template<
class LOOKUP_KEY>
2227 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2228 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2233 bool isInsertedFlag =
false;
2234 HashTableLink *result = d_impl.tryEmplace(
2243#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 1
2244 template<
class LOOKUP_KEY,
class Args_01>
2246 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2247 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2253 bool isInsertedFlag =
false;
2254 HashTableLink *result = d_impl.tryEmplace(
2264#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 2
2265 template<
class LOOKUP_KEY,
class Args_01,
2268 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2269 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2276 bool isInsertedFlag =
false;
2277 HashTableLink *result = d_impl.tryEmplace(
2288#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 3
2289 template<
class LOOKUP_KEY,
class Args_01,
2293 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2294 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2302 bool isInsertedFlag =
false;
2303 HashTableLink *result = d_impl.tryEmplace(
2315#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 4
2316 template<
class LOOKUP_KEY,
class Args_01,
2321 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2322 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2331 bool isInsertedFlag =
false;
2332 HashTableLink *result = d_impl.tryEmplace(
2345#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 5
2346 template<
class LOOKUP_KEY,
class Args_01,
2352 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2353 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2363 bool isInsertedFlag =
false;
2364 HashTableLink *result = d_impl.tryEmplace(
2378#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 6
2379 template<
class LOOKUP_KEY,
class Args_01,
2386 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2387 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2398 bool isInsertedFlag =
false;
2399 HashTableLink *result = d_impl.tryEmplace(
2414#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 7
2415 template<
class LOOKUP_KEY,
class Args_01,
2423 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2424 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2436 bool isInsertedFlag =
false;
2437 HashTableLink *result = d_impl.tryEmplace(
2453#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 8
2454 template<
class LOOKUP_KEY,
class Args_01,
2463 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2464 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2477 bool isInsertedFlag =
false;
2478 HashTableLink *result = d_impl.tryEmplace(
2495#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 9
2496 template<
class LOOKUP_KEY,
class Args_01,
2506 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2507 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2521 bool isInsertedFlag =
false;
2522 HashTableLink *result = d_impl.tryEmplace(
2540#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_C >= 10
2541 template<
class LOOKUP_KEY,
class Args_01,
2552 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2553 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2568 bool isInsertedFlag =
false;
2569 HashTableLink *result = d_impl.tryEmplace(
2591 template <
class... Args>
2595 template <
class... Args>
2597 BloombergLP::bslmf::MovableRef<KEY> key,
2600 template<
class LOOKUP_KEY,
class... Args>
2602 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2603 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value
2608 pair<iterator, bool> >::type
2613 bool isInsertedFlag =
false;
2614 HashTableLink *result = d_impl.tryEmplace(
2620 return ResultType(
iterator(result), isInsertedFlag);
2623 template<
class... Args>
2628 template <
class... Args>
2630 BloombergLP::bslmf::MovableRef<KEY> key,
2633 template<
class LOOKUP_KEY,
class... Args>
2635 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2636 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2642 bool isInsertedFlag =
false;
2643 HashTableLink *result = d_impl.tryEmplace(
2726 template <class LOOKUP_KEY>
2728 BloombergLP::
bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2729 && BloombergLP::
bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2731 count(const LOOKUP_KEY& key)
const
2733 return d_impl.find(key) != 0;
2750 template <
class LOOKUP_KEY>
2752 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value &&
2753 BloombergLP::bslmf::IsTransparentPredicate<EQUAL,
2756 contains(
const LOOKUP_KEY& key)
const
2777 template <class LOOKUP_KEY>
2779 BloombergLP::
bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2780 && BloombergLP::
bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2782 equal_range(const LOOKUP_KEY& key)
const
2786 HashTableLink *first = d_impl.find(key);
2810 template <
class LOOKUP_KEY>
2812 BloombergLP::bslmf::IsTransparentPredicate<HASH, LOOKUP_KEY>::value
2813 && BloombergLP::bslmf::IsTransparentPredicate<EQUAL,LOOKUP_KEY>::value,
2815 find(
const LOOKUP_KEY& key)
const
2865#ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
2877 class INPUT_ITERATOR,
2878 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2880 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2884 class = bsl::enable_if_t<
std::is_invocable_v<HASH, const KEY &>>,
2885 class = bsl::enable_if_t<
2886 std::is_invocable_v<EQUAL, const KEY &, const KEY &>>,
2887 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
2891 typename bsl::allocator_traits<ALLOCATOR>::size_type = 0,
2894 ALLOCATOR = ALLOCATOR())
2904 class INPUT_ITERATOR,
2908 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2910 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2911 class DEFAULT_ALLOCATOR = bsl::allocator<pair<const KEY, VALUE>>,
2912 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
2916 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
2930 class INPUT_ITERATOR,
2933 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2935 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2936 class = bsl::enable_if_t<std::is_invocable_v<HASH, const KEY &>>,
2937 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
2941 typename bsl::allocator_traits<ALLOCATOR>::size_type,
2944->
unordered_map<KEY, VALUE, HASH, bsl::equal_to<KEY>, ALLOCATOR>;
2953 class INPUT_ITERATOR,
2956 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2958 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2959 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
2960 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
2964 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
2976 class INPUT_ITERATOR,
2978 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2980 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2981 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
2985 typename bsl::allocator_traits<ALLOCATOR>::size_type,
2987->
unordered_map<KEY, VALUE, bsl::hash<KEY>, bsl::equal_to<KEY>, ALLOCATOR>;
2994 class INPUT_ITERATOR,
2996 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
2998 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
2999 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3000 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3004 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
3015 class INPUT_ITERATOR,
3017 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
3019 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
3020 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
3023->
unordered_map<KEY, VALUE, bsl::hash<KEY>, bsl::equal_to<KEY>, ALLOCATOR>;
3030 class INPUT_ITERATOR,
3032 class KEY = BloombergLP::bslstl::IteratorUtil::IterKey_t<INPUT_ITERATOR>,
3034 BloombergLP::bslstl::IteratorUtil::IterMapped_t<INPUT_ITERATOR>,
3035 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3036 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3052 class HASH = bsl::hash<KEY>,
3053 class EQUAL = bsl::equal_to<KEY>,
3054 class ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3055 class = bsl::enable_if_t<std::is_invocable_v<HASH, const KEY &>>,
3056 class = bsl::enable_if_t<
3057 std::is_invocable_v<EQUAL, const KEY &, const KEY &>>,
3058 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
3060unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3061 typename bsl::allocator_traits<ALLOCATOR>::size_type = 0,
3064 ALLOCATOR = ALLOCATOR())
3079 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3080 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3082unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3083 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
3101 class = bsl::enable_if_t<std::is_invocable_v<HASH, const KEY &>>,
3102 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
3104unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3105 typename bsl::allocator_traits<ALLOCATOR>::size_type,
3108->
unordered_map<KEY, VALUE, HASH, bsl::equal_to<KEY>, ALLOCATOR>;
3121 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3122 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3124unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3125 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
3138 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
3140unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3141 typename bsl::allocator_traits<ALLOCATOR>::size_type,
3143->
unordered_map<KEY, VALUE, bsl::hash<KEY>, bsl::equal_to<KEY>, ALLOCATOR>;
3153 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3154 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3156unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>,
3157 typename bsl::allocator_traits<DEFAULT_ALLOCATOR>::size_type,
3171 class = bsl::enable_if_t<bsl::IsStdAllocator_v<ALLOCATOR>>
3173unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>, ALLOCATOR)
3174->
unordered_map<KEY, VALUE, bsl::hash<KEY>, bsl::equal_to<KEY>, ALLOCATOR>;
3184 class DEFAULT_ALLOCATOR = bsl::allocator<bsl::pair<const KEY, VALUE>>,
3185 class = bsl::enable_if_t<bsl::is_convertible_v<ALLOC *, DEFAULT_ALLOCATOR>>
3187unordered_map(std::initializer_list<bsl::pair<const KEY, VALUE>>, ALLOC *)
3201template <class KEY, class VALUE, class HASH, class EQUAL, class ALLOCATOR>
3202bool operator==(const unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& lhs,
3203 const unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& rhs);
3205#ifndef BSLS_COMPILERFEATURES_SUPPORT_THREE_WAY_COMPARISON
3206template <class KEY, class VALUE, class HASH, class EQUAL, class ALLOCATOR>
3207bool operator!=(const unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& lhs,
3208 const unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& rhs);
3231erase_if(unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& m,
3232 PREDICATE predicate);
3246template <class KEY, class VALUE, class HASH, class EQUAL, class ALLOCATOR>
3247void
swap(unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& a,
3248 unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& b)
3263template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3265unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::
3266unordered_map(size_type initialNumBuckets,
3267 const HASH& hashFunction,
3268 const EQUAL& keyEqual,
3269 const ALLOCATOR& basicAllocator)
3270: d_impl(hashFunction, keyEqual, initialNumBuckets, 1.0f, basicAllocator)
3274template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3276unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3277 size_type initialNumBuckets,
3278 const HASH& hashFunction,
3279 const ALLOCATOR& basicAllocator)
3280: d_impl(hashFunction, EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3284template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3286unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3287 size_type initialNumBuckets,
3288 const ALLOCATOR& basicAllocator)
3289: d_impl(HASH(), EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3293template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3295unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3296 const ALLOCATOR& basicAllocator)
3297: d_impl(basicAllocator)
3301template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3303unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map()
3308template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3309template <
class INPUT_ITERATOR>
3311unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3312 INPUT_ITERATOR first,
3313 INPUT_ITERATOR last,
3314 size_type initialNumBuckets,
3315 const HASH& hashFunction,
3316 const EQUAL& keyEqual,
3317 const ALLOCATOR& basicAllocator)
3318: d_impl(hashFunction, keyEqual, initialNumBuckets, 1.0f, basicAllocator)
3320 this->insert(first, last);
3323template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3324template <
class INPUT_ITERATOR>
3326unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3327 INPUT_ITERATOR first,
3328 INPUT_ITERATOR last,
3329 size_type initialNumBuckets,
3330 const HASH& hashFunction,
3331 const ALLOCATOR& basicAllocator)
3332: d_impl(hashFunction, EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3334 this->insert(first, last);
3337template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3338template <
class INPUT_ITERATOR>
3340unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3341 INPUT_ITERATOR first,
3342 INPUT_ITERATOR last,
3343 size_type initialNumBuckets,
3344 const ALLOCATOR& basicAllocator)
3345: d_impl(HASH(), EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3347 this->insert(first, last);
3350template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3351template <
class INPUT_ITERATOR>
3353unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3354 INPUT_ITERATOR first,
3355 INPUT_ITERATOR last,
3356 const ALLOCATOR& basicAllocator)
3357: d_impl(basicAllocator)
3359 this->insert(first, last);
3362#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
3363template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3364# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
3365template <
class,
class,
class>
3368unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3369 std::initializer_list<value_type> values,
3370 size_type initialNumBuckets,
3371 const HASH& hashFunction,
3372 const EQUAL& keyEqual,
3373 const ALLOCATOR& basicAllocator)
3374: d_impl(hashFunction, keyEqual, initialNumBuckets, 1.0f, basicAllocator)
3376 insert(values.begin(), values.end());
3379template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3380# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
3381template <
class,
class>
3384unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3385 std::initializer_list<value_type> values,
3386 size_type initialNumBuckets,
3387 const HASH& hashFunction,
3388 const ALLOCATOR& basicAllocator)
3389: d_impl(hashFunction, EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3391 insert(values.begin(), values.end());
3394template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3395# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
3399unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3400 std::initializer_list<value_type> values,
3401 size_type initialNumBuckets,
3402 const ALLOCATOR& basicAllocator)
3403: d_impl(HASH(), EQUAL(), initialNumBuckets, 1.0f, basicAllocator)
3405 insert(values.begin(), values.end());
3408template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3409# ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
3413unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3414 std::initializer_list<value_type> values,
3415 const ALLOCATOR& basicAllocator)
3416: d_impl(basicAllocator)
3418 insert(values.begin(), values.end());
3422template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3424unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3425 const unordered_map& original)
3426: d_impl(original.d_impl,
3427 AllocatorTraits::select_on_container_copy_construction(
3428 original.get_allocator()))
3432template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3434unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3435 const unordered_map& original,
3436 const typename type_identity<ALLOCATOR>::type& basicAllocator)
3437: d_impl(original.d_impl, basicAllocator)
3441template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3443unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3444 BloombergLP::bslmf::MovableRef<unordered_map> original)
3445: d_impl(MoveUtil::access(original).get_allocator())
3447 unordered_map& lvalue = original;
3452template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3454unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::unordered_map(
3455 BloombergLP::bslmf::MovableRef<unordered_map> original,
3456 const typename type_identity<ALLOCATOR>::type& basicAllocator)
3457: d_impl(MoveUtil::move(MoveUtil::access(original).d_impl), basicAllocator)
3461template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3463unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::~unordered_map()
3469template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3471unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>&
3472unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::operator=(
3473 const unordered_map& rhs)
3478 d_impl = rhs.d_impl;
3483template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3485unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>&
3486unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::operator=(
3487 BloombergLP::bslmf::MovableRef<unordered_map> rhs)
3489 AllocatorTraits::is_always_equal::value &&
3490 std::is_nothrow_move_assignable<HASH>::value &&
3491 std::is_nothrow_move_assignable<EQUAL>::value)
3496 unordered_map& lvalue = rhs;
3498 d_impl = MoveUtil::move(lvalue.d_impl);
3503#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
3504template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3506unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>&
3507unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::operator=(
3508 std::initializer_list<value_type> rhs)
3510 unordered_map tmp(rhs.begin(), rhs.end(), d_impl.allocator());
3518template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3520typename add_lvalue_reference<VALUE>::type
3521unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::operator[](
3522 const key_type& key)
3524 HashTableLink *node = d_impl.insertIfMissing(key);
3525 return static_cast<HashTableNode *
>(node)->value().second;
3528template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3530typename add_lvalue_reference<VALUE>::type
3531unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::operator[](
3532 BloombergLP::bslmf::MovableRef<key_type> key)
3534 HashTableLink *node = d_impl.insertIfMissing(
3535 MoveUtil::move(MoveUtil::access(key)));
3536 return static_cast<HashTableNode *
>(node)->value().second;
3539template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3541typename add_lvalue_reference<VALUE>::type
3542unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::at(
const key_type& key)
3544 HashTableLink *node = d_impl.find(key);
3547 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
3548 "unordered_map<...>::at(key_type): invalid key value");
3551 return static_cast<HashTableNode *
>(node)->value().second;
3554template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3556typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
3557unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::begin()
3560 return iterator(d_impl.elementListRoot());
3563template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3565typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
3571template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3573typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::local_iterator
3574unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::begin(size_type index)
3578 return local_iterator(&d_impl.bucketAtIndex(index));
3581template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3583typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::local_iterator
3584unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::end(size_type index)
3588 return local_iterator(0, &d_impl.bucketAtIndex(index));
3591template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3594unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::clear()
3600#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
3603#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
3604#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT 10
3606#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D
3607#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
3609#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 0
3610template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3612 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3614unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3619 bool isInsertedFlag =
false;
3621 HashTableLink *result = d_impl.emplaceIfMissing(
3624 return ResultType(iterator(result), isInsertedFlag);
3628#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 1
3629template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3630template <
class Args_01>
3632 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3634unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3639 bool isInsertedFlag =
false;
3641 HashTableLink *result = d_impl.emplaceIfMissing(
3645 return ResultType(iterator(result), isInsertedFlag);
3649#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 2
3650template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3651template <
class Args_01,
3654 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3656unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3662 bool isInsertedFlag =
false;
3664 HashTableLink *result = d_impl.emplaceIfMissing(
3669 return ResultType(iterator(result), isInsertedFlag);
3673#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 3
3674template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3675template <
class Args_01,
3679 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3681unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3688 bool isInsertedFlag =
false;
3690 HashTableLink *result = d_impl.emplaceIfMissing(
3696 return ResultType(iterator(result), isInsertedFlag);
3700#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 4
3701template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3702template <
class Args_01,
3707 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3709unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3717 bool isInsertedFlag =
false;
3719 HashTableLink *result = d_impl.emplaceIfMissing(
3726 return ResultType(iterator(result), isInsertedFlag);
3730#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 5
3731template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3732template <
class Args_01,
3738 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3740unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3749 bool isInsertedFlag =
false;
3751 HashTableLink *result = d_impl.emplaceIfMissing(
3759 return ResultType(iterator(result), isInsertedFlag);
3763#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 6
3764template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3765template <
class Args_01,
3772 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3774unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3784 bool isInsertedFlag =
false;
3786 HashTableLink *result = d_impl.emplaceIfMissing(
3795 return ResultType(iterator(result), isInsertedFlag);
3799#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 7
3800template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3801template <
class Args_01,
3809 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3811unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3822 bool isInsertedFlag =
false;
3824 HashTableLink *result = d_impl.emplaceIfMissing(
3834 return ResultType(iterator(result), isInsertedFlag);
3838#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 8
3839template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3840template <
class Args_01,
3849 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3851unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3863 bool isInsertedFlag =
false;
3865 HashTableLink *result = d_impl.emplaceIfMissing(
3876 return ResultType(iterator(result), isInsertedFlag);
3880#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 9
3881template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3882template <
class Args_01,
3892 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3894unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3907 bool isInsertedFlag =
false;
3909 HashTableLink *result = d_impl.emplaceIfMissing(
3921 return ResultType(iterator(result), isInsertedFlag);
3925#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 10
3926template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3927template <
class Args_01,
3938 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
3940unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
3954 bool isInsertedFlag =
false;
3956 HashTableLink *result = d_impl.emplaceIfMissing(
3969 return ResultType(iterator(result), isInsertedFlag);
3974#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 0
3975template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3976typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
3977unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
3981 bool isInsertedFlag =
false;
3983 HashTableLink *result = d_impl.emplaceIfMissing(
3986 return iterator(result);
3990#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 1
3991template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
3992template <
class Args_01>
3993typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
3994unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
3999 bool isInsertedFlag =
false;
4001 HashTableLink *result = d_impl.emplaceIfMissing(
4005 return iterator(result);
4009#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 2
4010template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4011template <
class Args_01,
4013typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4014unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4020 bool isInsertedFlag =
false;
4022 HashTableLink *result = d_impl.emplaceIfMissing(
4027 return iterator(result);
4031#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 3
4032template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4033template <
class Args_01,
4036typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4037unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4044 bool isInsertedFlag =
false;
4046 HashTableLink *result = d_impl.emplaceIfMissing(
4052 return iterator(result);
4056#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 4
4057template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4058template <
class Args_01,
4062typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4063unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4071 bool isInsertedFlag =
false;
4073 HashTableLink *result = d_impl.emplaceIfMissing(
4080 return iterator(result);
4084#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 5
4085template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4086template <
class Args_01,
4091typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4092unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4101 bool isInsertedFlag =
false;
4103 HashTableLink *result = d_impl.emplaceIfMissing(
4111 return iterator(result);
4115#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 6
4116template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4117template <
class Args_01,
4123typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4124unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4134 bool isInsertedFlag =
false;
4136 HashTableLink *result = d_impl.emplaceIfMissing(
4145 return iterator(result);
4149#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 7
4150template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4151template <
class Args_01,
4158typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4159unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4170 bool isInsertedFlag =
false;
4172 HashTableLink *result = d_impl.emplaceIfMissing(
4182 return iterator(result);
4186#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 8
4187template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4188template <
class Args_01,
4196typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4197unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4209 bool isInsertedFlag =
false;
4211 HashTableLink *result = d_impl.emplaceIfMissing(
4222 return iterator(result);
4226#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 9
4227template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4228template <
class Args_01,
4237typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4238unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4251 bool isInsertedFlag =
false;
4253 HashTableLink *result = d_impl.emplaceIfMissing(
4265 return iterator(result);
4269#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_D >= 10
4270template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4271template <
class Args_01,
4281typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4282unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4296 bool isInsertedFlag =
false;
4298 HashTableLink *result = d_impl.emplaceIfMissing(
4311 return iterator(result);
4318template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4319template <
class... Args>
4321 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
4323unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace(
4328 bool isInsertedFlag =
false;
4330 HashTableLink *result = d_impl.emplaceIfMissing(
4334 return ResultType(iterator(result), isInsertedFlag);
4337template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4338template <
class... Args>
4339typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4340unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::emplace_hint(
4345 bool isInsertedFlag =
false;
4347 HashTableLink *result = d_impl.emplaceIfMissing(
4351 return iterator(result);
4356template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4358typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4359unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::erase(
4360 const_iterator position)
4364 return iterator(d_impl.remove(position.node()));
4367template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4369typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4370unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::erase(iterator position)
4372 return erase(const_iterator(position));
4375template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4376typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
4377unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::erase(
const key_type& key)
4379 HashTableLink *target = d_impl.find(key);
4381 d_impl.remove(target);
4389template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4390typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4391unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::erase(const_iterator first,
4392 const_iterator last)
4395#if defined BDE_BUILD_TARGET_SAFE_2
4396 if (first != last) {
4397 iterator it = this->
begin();
4398 const iterator
end = this->end();
4399 for (; it != first; ++it) {
4403 for (; it != last; ++it) {
4409 while (first != last) {
4410 first = this->
erase(first);
4413 return iterator(first.node());
4416template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4418bool unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::contains(
4419 const key_type& key)
const
4421 return find(key) !=
end();
4424template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4426typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4427unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::find(
const key_type& key)
4429 return iterator(d_impl.find(key));
4432template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4434pair<typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
4436unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::insert(
4437 const value_type& value)
4441 bool isInsertedFlag =
false;
4443 HashTableLink *result = d_impl.insertIfMissing(&isInsertedFlag, value);
4445 return ResultType(iterator(result), isInsertedFlag);
4448template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4450typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4451unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::insert(
4453 const value_type& value)
4455 bool isInsertedFlag;
4457 HashTableLink *result = d_impl.insertIfMissing(&isInsertedFlag, value);
4459 return iterator(result);
4462template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4463template <
class INPUT_ITERATOR>
4464void unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::insert(
4465 INPUT_ITERATOR first,
4466 INPUT_ITERATOR last)
4468 difference_type maxInsertions =
4469 ::BloombergLP::bslstl::IteratorUtil::insertDistance(first, last);
4470 if (0 < maxInsertions) {
4471 this->reserve(this->
size() + maxInsertions);
4477 bool isInsertedFlag;
4478 while (first != last) {
4479 d_impl.emplaceIfMissing(&isInsertedFlag, *first);
4484#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
4485template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4486void unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::insert(
4487 std::initializer_list<value_type> values)
4489 insert(values.begin(), values.end());
4496template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4497template <
class BDE_OTHER_TYPE>
4505 bool isInsertedFlag =
false;
4506 HashTableLink *result = d_impl.insertOrAssign(
4511 return ResultType(iterator(result), isInsertedFlag);
4514template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4515template <
class BDE_OTHER_TYPE>
4519 BloombergLP::bslmf::MovableRef<KEY> key,
4523 bool isInsertedFlag =
false;
4524 HashTableLink *result = d_impl.insertOrAssign(
4529 return ResultType(iterator(result), isInsertedFlag);
4532template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4533template <
class BDE_OTHER_TYPE>
4534typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4536 const_iterator hint,
4540 bool isInsertedFlag =
false;
4541 HashTableLink *result = d_impl.insertOrAssign(
4546 return iterator(result);
4549template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4550template <
class BDE_OTHER_TYPE>
4551typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator
4553 const_iterator hint,
4554 BloombergLP::bslmf::MovableRef<KEY> key,
4557 bool isInsertedFlag =
false;
4558 HashTableLink *result = d_impl.insertOrAssign(
4563 return iterator(result);
4567template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4569 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator,
4570 typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::iterator>
4571unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::equal_range(
4572 const key_type& key)
4576 HashTableLink *first = d_impl.find(key);
4577 return first ? ResultType(iterator(first), iterator(first->nextLink()))
4578 : ResultType(iterator(0), iterator(0));
4581template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4584unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::max_load_factor(
4585 float newMaxLoadFactor)
4587 d_impl.setMaxLoadFactor(newMaxLoadFactor);
4590template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4593unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::rehash(
4594 size_type numBuckets)
4596 d_impl.rehashForNumBuckets(numBuckets);
4599template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4602unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::reserve(
4603 size_type numElements)
4605 d_impl.reserveForNumElements(numElements);
4608template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4611unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::swap(unordered_map& other)
4613 AllocatorTraits::is_always_equal::value &&
4614 bsl::is_nothrow_swappable<HASH>::value &&
4615 bsl::is_nothrow_swappable<EQUAL>::value)
4617 d_impl.swap(other.d_impl);
4620#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
4623#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
4624#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT 10
4626#ifndef BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F
4627#define BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT
4629#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 0
4630template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4639 bool isInsertedFlag =
false;
4640 HashTableLink *result = d_impl.tryEmplace(
4645 return ResultType(iterator(result), isInsertedFlag);
4649#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 1
4650template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4651template <
class Args_01>
4661 bool isInsertedFlag =
false;
4662 HashTableLink *result = d_impl.tryEmplace(
4668 return ResultType(iterator(result), isInsertedFlag);
4672#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 2
4673template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4674template <
class Args_01,
4686 bool isInsertedFlag =
false;
4687 HashTableLink *result = d_impl.tryEmplace(
4694 return ResultType(iterator(result), isInsertedFlag);
4698#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 3
4699template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4700template <
class Args_01,
4714 bool isInsertedFlag =
false;
4715 HashTableLink *result = d_impl.tryEmplace(
4723 return ResultType(iterator(result), isInsertedFlag);
4727#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 4
4728template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4729template <
class Args_01,
4745 bool isInsertedFlag =
false;
4746 HashTableLink *result = d_impl.tryEmplace(
4755 return ResultType(iterator(result), isInsertedFlag);
4759#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 5
4760template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4761template <
class Args_01,
4779 bool isInsertedFlag =
false;
4780 HashTableLink *result = d_impl.tryEmplace(
4790 return ResultType(iterator(result), isInsertedFlag);
4794#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 6
4795template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4796template <
class Args_01,
4816 bool isInsertedFlag =
false;
4817 HashTableLink *result = d_impl.tryEmplace(
4828 return ResultType(iterator(result), isInsertedFlag);
4832#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 7
4833template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4834template <
class Args_01,
4856 bool isInsertedFlag =
false;
4857 HashTableLink *result = d_impl.tryEmplace(
4869 return ResultType(iterator(result), isInsertedFlag);
4873#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 8
4874template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4875template <
class Args_01,
4899 bool isInsertedFlag =
false;
4900 HashTableLink *result = d_impl.tryEmplace(
4913 return ResultType(iterator(result), isInsertedFlag);
4917#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 9
4918template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4919template <
class Args_01,
4945 bool isInsertedFlag =
false;
4946 HashTableLink *result = d_impl.tryEmplace(
4960 return ResultType(iterator(result), isInsertedFlag);
4964#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 10
4965template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
4966template <
class Args_01,
4994 bool isInsertedFlag =
false;
4995 HashTableLink *result = d_impl.tryEmplace(
5010 return ResultType(iterator(result), isInsertedFlag);
5015#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 0
5016template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5022 BloombergLP::bslmf::MovableRef<KEY> key)
5025 bool isInsertedFlag =
false;
5026 HashTableLink *result = d_impl.tryEmplace(
5031 return ResultType(iterator(result), isInsertedFlag);
5035#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 1
5036template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5037template <
class Args_01>
5043 BloombergLP::bslmf::MovableRef<KEY> key,
5047 bool isInsertedFlag =
false;
5048 HashTableLink *result = d_impl.tryEmplace(
5054 return ResultType(iterator(result), isInsertedFlag);
5058#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 2
5059template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5060template <
class Args_01,
5067 BloombergLP::bslmf::MovableRef<KEY> key,
5072 bool isInsertedFlag =
false;
5073 HashTableLink *result = d_impl.tryEmplace(
5080 return ResultType(iterator(result), isInsertedFlag);
5084#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 3
5085template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5086template <
class Args_01,
5094 BloombergLP::bslmf::MovableRef<KEY> key,
5100 bool isInsertedFlag =
false;
5101 HashTableLink *result = d_impl.tryEmplace(
5109 return ResultType(iterator(result), isInsertedFlag);
5113#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 4
5114template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5115template <
class Args_01,
5124 BloombergLP::bslmf::MovableRef<KEY> key,
5131 bool isInsertedFlag =
false;
5132 HashTableLink *result = d_impl.tryEmplace(
5141 return ResultType(iterator(result), isInsertedFlag);
5145#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 5
5146template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5147template <
class Args_01,
5157 BloombergLP::bslmf::MovableRef<KEY> key,
5165 bool isInsertedFlag =
false;
5166 HashTableLink *result = d_impl.tryEmplace(
5176 return ResultType(iterator(result), isInsertedFlag);
5180#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 6
5181template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5182template <
class Args_01,
5193 BloombergLP::bslmf::MovableRef<KEY> key,
5202 bool isInsertedFlag =
false;
5203 HashTableLink *result = d_impl.tryEmplace(
5214 return ResultType(iterator(result), isInsertedFlag);
5218#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 7
5219template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5220template <
class Args_01,
5232 BloombergLP::bslmf::MovableRef<KEY> key,
5242 bool isInsertedFlag =
false;
5243 HashTableLink *result = d_impl.tryEmplace(
5255 return ResultType(iterator(result), isInsertedFlag);
5259#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 8
5260template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5261template <
class Args_01,
5274 BloombergLP::bslmf::MovableRef<KEY> key,
5285 bool isInsertedFlag =
false;
5286 HashTableLink *result = d_impl.tryEmplace(
5299 return ResultType(iterator(result), isInsertedFlag);
5303#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 9
5304template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5305template <
class Args_01,
5319 BloombergLP::bslmf::MovableRef<KEY> key,
5331 bool isInsertedFlag =
false;
5332 HashTableLink *result = d_impl.tryEmplace(
5346 return ResultType(iterator(result), isInsertedFlag);
5350#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 10
5351template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5352template <
class Args_01,
5367 BloombergLP::bslmf::MovableRef<KEY> key,
5380 bool isInsertedFlag =
false;
5381 HashTableLink *result = d_impl.tryEmplace(
5396 return ResultType(iterator(result), isInsertedFlag);
5401#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 0
5402template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5406 const_iterator hint,
5409 bool isInsertedFlag =
false;
5410 HashTableLink *result = d_impl.tryEmplace(
5415 return iterator(result);
5419#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 1
5420template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5421template <
class Args_01>
5425 const_iterator hint,
5429 bool isInsertedFlag =
false;
5430 HashTableLink *result = d_impl.tryEmplace(
5436 return iterator(result);
5440#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 2
5441template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5442template <
class Args_01,
5447 const_iterator hint,
5452 bool isInsertedFlag =
false;
5453 HashTableLink *result = d_impl.tryEmplace(
5460 return iterator(result);
5464#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 3
5465template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5466template <
class Args_01,
5472 const_iterator hint,
5478 bool isInsertedFlag =
false;
5479 HashTableLink *result = d_impl.tryEmplace(
5487 return iterator(result);
5491#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 4
5492template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5493template <
class Args_01,
5500 const_iterator hint,
5507 bool isInsertedFlag =
false;
5508 HashTableLink *result = d_impl.tryEmplace(
5517 return iterator(result);
5521#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 5
5522template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5523template <
class Args_01,
5531 const_iterator hint,
5539 bool isInsertedFlag =
false;
5540 HashTableLink *result = d_impl.tryEmplace(
5550 return iterator(result);
5554#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 6
5555template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5556template <
class Args_01,
5565 const_iterator hint,
5574 bool isInsertedFlag =
false;
5575 HashTableLink *result = d_impl.tryEmplace(
5586 return iterator(result);
5590#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 7
5591template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5592template <
class Args_01,
5602 const_iterator hint,
5612 bool isInsertedFlag =
false;
5613 HashTableLink *result = d_impl.tryEmplace(
5625 return iterator(result);
5629#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 8
5630template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5631template <
class Args_01,
5642 const_iterator hint,
5653 bool isInsertedFlag =
false;
5654 HashTableLink *result = d_impl.tryEmplace(
5667 return iterator(result);
5671#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 9
5672template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5673template <
class Args_01,
5685 const_iterator hint,
5697 bool isInsertedFlag =
false;
5698 HashTableLink *result = d_impl.tryEmplace(
5712 return iterator(result);
5716#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 10
5717template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5718template <
class Args_01,
5731 const_iterator hint,
5744 bool isInsertedFlag =
false;
5745 HashTableLink *result = d_impl.tryEmplace(
5760 return iterator(result);
5765#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 0
5766template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5770 const_iterator hint,
5771 BloombergLP::bslmf::MovableRef<KEY> key)
5773 bool isInsertedFlag =
false;
5774 HashTableLink *result = d_impl.tryEmplace(
5779 return iterator(result);
5783#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 1
5784template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5785template <
class Args_01>
5789 const_iterator hint,
5790 BloombergLP::bslmf::MovableRef<KEY> key,
5793 bool isInsertedFlag =
false;
5794 HashTableLink *result = d_impl.tryEmplace(
5800 return iterator(result);
5804#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 2
5805template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5806template <
class Args_01,
5811 const_iterator hint,
5812 BloombergLP::bslmf::MovableRef<KEY> key,
5816 bool isInsertedFlag =
false;
5817 HashTableLink *result = d_impl.tryEmplace(
5824 return iterator(result);
5828#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 3
5829template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5830template <
class Args_01,
5836 const_iterator hint,
5837 BloombergLP::bslmf::MovableRef<KEY> key,
5842 bool isInsertedFlag =
false;
5843 HashTableLink *result = d_impl.tryEmplace(
5851 return iterator(result);
5855#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 4
5856template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5857template <
class Args_01,
5864 const_iterator hint,
5865 BloombergLP::bslmf::MovableRef<KEY> key,
5871 bool isInsertedFlag =
false;
5872 HashTableLink *result = d_impl.tryEmplace(
5881 return iterator(result);
5885#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 5
5886template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5887template <
class Args_01,
5895 const_iterator hint,
5896 BloombergLP::bslmf::MovableRef<KEY> key,
5903 bool isInsertedFlag =
false;
5904 HashTableLink *result = d_impl.tryEmplace(
5914 return iterator(result);
5918#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 6
5919template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5920template <
class Args_01,
5929 const_iterator hint,
5930 BloombergLP::bslmf::MovableRef<KEY> key,
5938 bool isInsertedFlag =
false;
5939 HashTableLink *result = d_impl.tryEmplace(
5950 return iterator(result);
5954#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 7
5955template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5956template <
class Args_01,
5966 const_iterator hint,
5967 BloombergLP::bslmf::MovableRef<KEY> key,
5976 bool isInsertedFlag =
false;
5977 HashTableLink *result = d_impl.tryEmplace(
5989 return iterator(result);
5993#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 8
5994template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
5995template <
class Args_01,
6006 const_iterator hint,
6007 BloombergLP::bslmf::MovableRef<KEY> key,
6017 bool isInsertedFlag =
false;
6018 HashTableLink *result = d_impl.tryEmplace(
6031 return iterator(result);
6035#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 9
6036template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6037template <
class Args_01,
6049 const_iterator hint,
6050 BloombergLP::bslmf::MovableRef<KEY> key,
6061 bool isInsertedFlag =
false;
6062 HashTableLink *result = d_impl.tryEmplace(
6076 return iterator(result);
6080#if BSLSTL_UNORDEREDMAP_VARIADIC_LIMIT_F >= 10
6081template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6082template <
class Args_01,
6095 const_iterator hint,
6096 BloombergLP::bslmf::MovableRef<KEY> key,
6108 bool isInsertedFlag =
false;
6109 HashTableLink *result = d_impl.tryEmplace(
6124 return iterator(result);
6131template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6132template <
class... Args>
6142 bool isInsertedFlag =
false;
6143 HashTableLink *result = d_impl.tryEmplace(
6149 return ResultType(iterator(result), isInsertedFlag);
6152template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6153template <
class... Args>
6159 BloombergLP::bslmf::MovableRef<KEY> key,
6163 bool isInsertedFlag =
false;
6164 HashTableLink *result = d_impl.tryEmplace(
6170 return ResultType(iterator(result), isInsertedFlag);
6173template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6174template <
class... Args>
6178 const_iterator hint,
6182 bool isInsertedFlag =
false;
6183 HashTableLink *result = d_impl.tryEmplace(
6189 return iterator(result);
6192template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6193template <
class... Args>
6197 const_iterator hint,
6198 BloombergLP::bslmf::MovableRef<KEY> key,
6201 bool isInsertedFlag =
false;
6202 HashTableLink *result = d_impl.tryEmplace(
6208 return iterator(result);
6214template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6215typename add_lvalue_reference<const VALUE>::type
6216unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::at(
6217 const key_type& key)
const
6219 HashTableLink *target = d_impl.find(key);
6221 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
6222 "unordered_map<...>::at(key_type): invalid key value");
6224 return static_cast<HashTableNode *
>(target)->value().second;
6227template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6229typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_iterator
6230unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::begin() const
6233 return const_iterator(d_impl.elementListRoot());
6236template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6238typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_iterator
6239unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::end() const
6242 return const_iterator();
6245template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6247typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_iterator
6248unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::cbegin() const
6251 return const_iterator(d_impl.elementListRoot());
6254template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6256typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_iterator
6257unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::cend() const
6260 return const_iterator();
6263template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6266unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_local_iterator
6267unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::begin(size_type index)
const
6271 return const_local_iterator(&d_impl.bucketAtIndex(index));
6274template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6277unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_local_iterator
6278unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::end(size_type index)
const
6282 return const_local_iterator(0, &d_impl.bucketAtIndex(index));
6286template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6289unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_local_iterator
6290unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::cbegin(
6291 size_type index)
const
6295 return const_local_iterator(&d_impl.bucketAtIndex(index));
6298template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6301unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_local_iterator
6302unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::cend(size_type index)
const
6306 return const_local_iterator(0, &d_impl.bucketAtIndex(index));
6309template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6311typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6312unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::bucket(
6313 const key_type& key)
const
6315 return d_impl.bucketIndexForKey(key);
6318template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6320typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6321unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::bucket_count() const
6324 return d_impl.numBuckets();
6327template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6329typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6330unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::max_bucket_count() const
6333 return d_impl.maxNumBuckets();
6336template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6338typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6339unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::bucket_size(
6340 size_type index)
const
6344 return d_impl.countElementsInBucket(index);
6347template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6349typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6350unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::count(
6351 const key_type& key)
const
6353 return d_impl.find(key) != 0;
6356template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6359unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::empty() const
6362 return 0 == d_impl.size();
6365template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6370 ALLOCATOR>::const_iterator,
6371 typename unordered_map<KEY,
6375 ALLOCATOR>::const_iterator>
6376unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::equal_range(
6377 const key_type& key)
const
6381 HashTableLink *first = d_impl.find(key);
6383 ? ResultType(const_iterator(first), const_iterator(first->nextLink()))
6384 : ResultType(const_iterator(0), const_iterator(0));
6387template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6390 unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::const_iterator
6391unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::find(
6392 const key_type& key)
const
6394 return const_iterator(d_impl.find(key));
6397template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6400unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::get_allocator() const
6403 return d_impl.allocator();
6406template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6408HASH unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::hash_function()
const
6410 return d_impl.hasher();
6413template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6415EQUAL unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::key_eq()
const
6417 return d_impl.comparator();
6420template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6423unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::load_factor() const
6426 return d_impl.loadFactor();
6429template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6432unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::max_load_factor() const
6435 return d_impl.maxLoadFactor();
6439template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6441typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6442unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size() const
6445 return d_impl.size();
6448template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6450typename unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::size_type
6451unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>::max_size() const
6454 return d_impl.maxSize();
6460template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6466 return lhs.d_impl == rhs.d_impl;
6469#ifndef BSLS_COMPILERFEATURES_SUPPORT_THREE_WAY_COMPARISON
6470template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6476 return !(lhs == rhs);
6489bsl::erase_if(unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR>& m,
6490 PREDICATE predicate)
6492 return BloombergLP::bslstl::AlgorithmUtil::containerEraseIf(m, predicate);
6495template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6520template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6521struct HasStlIterators<
bsl::unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR> >
6529template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6530struct UsesBslmaAllocator<
bsl::unordered_map<KEY,
6542template <
class KEY,
class VALUE,
class HASH,
class EQUAL,
class ALLOCATOR>
6543struct IsBitwiseMoveable<
6544 bsl::unordered_map<KEY, VALUE, HASH, EQUAL, ALLOCATOR> >
6545 : ::BloombergLP::bslmf::IsBitwiseMoveable<BloombergLP::bslstl::HashTable<
6546 ::BloombergLP::bslstl::
6547 UnorderedMapKeyConfiguration<KEY, bsl::pair<const KEY, VALUE> >,
6557# error Not valid except when included from bslstl_unorderedmap.h
Definition bslma_bslallocator.h:580
Definition bslstl_pair.h:1210
Definition bslstl_unorderedmap.h:1089
enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, iterator >::type find(const LOOKUP_KEY &key)
Definition bslstl_unorderedmap.h:1559
const_iterator cbegin() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3350
pair< iterator, bool > insert_or_assign(const KEY &key, BDE_OTHER_TYPE &&obj)
size_type size() const BSLS_KEYWORD_NOEXCEPT
Return the number of elements in this unordered map.
Definition bslstl_unorderedmap.h:3544
AllocatorTraits::size_type size_type
Definition bslstl_unorderedmap.h:1152
float load_factor() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3525
friend bool operator==(const unordered_map< KEY2, VALUE2, HASH2, EQUAL2, ALLOCATOR2 > &, const unordered_map< KEY2, VALUE2, HASH2, EQUAL2, ALLOCATOR2 > &)
iterator end() BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:2894
AllocatorTraits::pointer pointer
Definition bslstl_unorderedmap.h:1154
value_type & reference
Definition bslstl_unorderedmap.h:1149
EQUAL key_equal
Definition bslstl_unorderedmap.h:1146
AllocatorTraits::const_pointer const_pointer
Definition bslstl_unorderedmap.h:1155
ALLOCATOR allocator_type
Definition bslstl_unorderedmap.h:1147
iterator emplace_hint(const_iterator hint, Args &&... args)
Definition bslstl_unorderedmap.h:2950
size_type bucket(const key_type &key) const
Definition bslstl_unorderedmap.h:3414
void rehash(size_type numBuckets)
Definition bslstl_unorderedmap.h:3206
enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, pair< iterator, iterator > >::type equal_range(const LOOKUP_KEY &key)
Definition bslstl_unorderedmap.h:1800
HASH hash_function() const
Definition bslstl_unorderedmap.h:3510
allocator_type get_allocator() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3502
HASH hasher
Definition bslstl_unorderedmap.h:1145
BloombergLP::bslstl::HashTableBucketIterator< value_type, difference_type > local_iterator
Definition bslstl_unorderedmap.h:1162
void reserve(size_type numElements)
Definition bslstl_unorderedmap.h:3215
pair< iterator, bool > insert(const value_type &value)
Definition bslstl_unorderedmap.h:3051
iterator erase(const_iterator position)
Definition bslstl_unorderedmap.h:2974
EQUAL key_eq() const
Definition bslstl_unorderedmap.h:3517
pair< iterator, bool > emplace(Args &&... args)
const value_type & const_reference
Definition bslstl_unorderedmap.h:1150
size_type max_size() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3553
BloombergLP::bslstl::HashTableBucketIterator< const value_type, difference_type > const_local_iterator
Definition bslstl_unorderedmap.h:1164
const_iterator cend() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3359
void clear() BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:2922
unordered_map()
Definition bslstl_unorderedmap.h:2631
float max_load_factor() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3534
BloombergLP::bslstl::HashTableIterator< value_type, difference_type > iterator
Definition bslstl_unorderedmap.h:1158
AllocatorTraits::difference_type difference_type
Definition bslstl_unorderedmap.h:1153
bsl::pair< const KEY, VALUE > value_type
Definition bslstl_unorderedmap.h:1144
size_type max_bucket_count() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3432
enable_if< BloombergLP::bslmf::IsTransparentPredicate< HASH, LOOKUP_KEY >::value &&BloombergLP::bslmf::IsTransparentPredicate< EQUAL, LOOKUP_KEY >::value, size_type >::type count(const LOOKUP_KEY &key) const
Definition bslstl_unorderedmap.h:2059
KEY key_type
Definition bslstl_unorderedmap.h:1142
add_lvalue_reference< VALUE >::type at(const key_type &key)
Definition bslstl_unorderedmap.h:2870
VALUE mapped_type
Definition bslstl_unorderedmap.h:1143
size_type bucket_count() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3423
void swap(unordered_map &other) BSLS_KEYWORD_NOEXCEPT_SPECIFICATION(AllocatorTraits pair< iterator, bool > try_emplace(const KEY &key, Args &&... args)
Definition bslstl_unorderedmap.h:1875
bool contains(const key_type &key) const
Definition bslstl_unorderedmap.h:3033
iterator begin() BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:2885
BloombergLP::bslstl::HashTableIterator< const value_type, difference_type > const_iterator
Definition bslstl_unorderedmap.h:1160
bool empty() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_unorderedmap.h:3461
size_type bucket_size(size_type index) const
Definition bslstl_unorderedmap.h:3441
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
#define BSLS_KEYWORD_NOEXCEPT_SPECIFICATION(...)
Definition bsls_keyword.h:634
void swap(OptionValue &a, OptionValue &b)
bsl::size_t size(const TYPE &array)
Return the number of elements in the specified array.
Definition bdlb_printmethods.h:283
void swap(array< VALUE_TYPE, SIZE > &lhs, array< VALUE_TYPE, SIZE > &rhs)
deque< VALUE_TYPE, ALLOCATOR >::size_type erase(deque< VALUE_TYPE, ALLOCATOR > &deq, const BDE_OTHER_TYPE &value)
Definition bslstl_deque.h:4126
T::iterator begin(T &container)
Definition bslstl_iterator.h:1495
bool operator==(const memory_resource &a, const memory_resource &b)
T::iterator end(T &container)
Definition bslstl_iterator.h:1523
deque< VALUE_TYPE, ALLOCATOR >::size_type erase_if(deque< VALUE_TYPE, ALLOCATOR > &deq, PREDICATE predicate)
Definition bslstl_deque.h:4135
bool operator!=(const memory_resource &a, const memory_resource &b)
Definition bdlc_flathashmap.h:1805
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
Definition bdldfp_decimal.h:5188
t_TYPE & type
This typedef defines the return type of this meta function.
Definition bslmf_addlvaluereference.h:129
Definition bslma_allocatortraits.h:1061
BloombergLP::bslma::AllocatorTraits_ConstPointerType< ALLOCATOR >::type const_pointer
Definition bslma_allocatortraits.h:1152
BloombergLP::bslma::AllocatorTraits_SizeType< ALLOCATOR >::type size_type
Definition bslma_allocatortraits.h:1165
BloombergLP::bslma::AllocatorTraits_PointerType< ALLOCATOR >::type pointer
Definition bslma_allocatortraits.h:1149
BloombergLP::bslma::AllocatorTraits_DifferenceType< ALLOCATOR >::type difference_type
Definition bslma_allocatortraits.h:1162
Definition bslmf_enableif.h:525
Definition bslstl_equalto.h:311
Definition bslstl_hash.h:498
Definition bslmf_isconvertible.h:867