114 class [[nodiscard]]
Mapping :
public Iterable<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> {
160 static_assert (IEqualsComparer<KeyEqualsCompareFunctionType, key_type>);
192 requires (IEqualsComparer<equal_to<KEY_TYPE>, KEY_TYPE>);
193 template <IEqualsComparer<KEY_TYPE> KEY_EQUALS_COMPARER>
194 explicit Mapping (KEY_EQUALS_COMPARER&& keyEqualsComparer);
198 requires (IEqualsComparer<equal_to<KEY_TYPE>, KEY_TYPE>);
199 template <IEqualsComparer<KEY_TYPE> KEY_EQUALS_COMPARER>
200 Mapping (KEY_EQUALS_COMPARER&& keyEqualsComparer, const initializer_list<
KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>>& src);
201 template <IIterableOfTo<
KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERABLE_OF_ADDABLE>
202 explicit
Mapping (ITERABLE_OF_ADDABLE&& src)
203 requires (IEqualsComparer<equal_to<KEY_TYPE>, KEY_TYPE> and
204 not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>,
Mapping<KEY_TYPE, MAPPED_VALUE_TYPE>>)
205#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
208 AddAll (forward<ITERABLE_OF_ADDABLE> (src));
209 _AssertRepValidType ();
213 template <IEqualsComparer<KEY_TYPE> KEY_EQUALS_COMPARER, IIterableOfTo<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERABLE_OF_ADDABLE>
214 Mapping (KEY_EQUALS_COMPARER&& keyEqualsComparer, ITERABLE_OF_ADDABLE&& src);
215 template <IInputIterator<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERATOR_OF_ADDABLE, sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
216 Mapping (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end)
217 requires (IEqualsComparer<equal_to<KEY_TYPE>, KEY_TYPE>);
218 template <IEqualsComparer<KEY_TYPE> KEY_EQUALS_COMPARER, IInputIterator<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERATOR_OF_ADDABLE,
219 sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
220 Mapping (KEY_EQUALS_COMPARER&& keyEqualsComparer, ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end);
223 explicit Mapping (shared_ptr<_IRep>&& rep)
noexcept;
224 explicit Mapping (
const shared_ptr<_IRep>& rep)
noexcept;
229 nonvirtual Mapping& operator= (Mapping&&) noexcept = default;
230 nonvirtual Mapping& operator= (const Mapping&) = default;
235 nonvirtual KeyEqualsCompareFunctionType GetKeyEqualsComparer () const;
265 nonvirtual Iterable<key_type> Keys () const;
297 nonvirtual Iterable<mapped_type> MappedValues () const;
313 nonvirtual optional<mapped_type> Lookup (ArgByValueType<key_type> key) const;
314 nonvirtual
bool Lookup (ArgByValueType<key_type> key, optional<mapped_type>* item) const;
315 nonvirtual
bool Lookup (ArgByValueType<key_type> key, mapped_type* item) const;
316 nonvirtual
bool Lookup (ArgByValueType<key_type> key, nullptr_t) const;
322 template <typename THROW_IF_MISSING>
323 nonvirtual
mapped_type LookupChecked (ArgByValueType<
key_type> key, const THROW_IF_MISSING& throwIfMissing) const;
353 nonvirtual add_const_t<mapped_type> operator[] (ArgByValueType<key_type> key)
const;
359 nonvirtual
bool ContainsKey (ArgByValueType<key_type> key)
const;
367 template <
typename VALUE_EQUALS_COMPARER = equal_to<MAPPED_VALUE_TYPE>>
368 nonvirtual
bool ContainsMappedValue (ArgByValueType<mapped_type> v, VALUE_EQUALS_COMPARER&& valueEqualsComparer = {})
const;
396 nonvirtual
bool Add (ArgByValueType<key_type> key, ArgByValueType<mapped_type> newElt,
AddReplaceMode addReplaceMode = AddReplaceMode::eAddReplaces);
397 nonvirtual
bool Add (ArgByValueType<value_type> p,
AddReplaceMode addReplaceMode = AddReplaceMode::eAddReplaces);
407 template <IIterableOfTo<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERABLE_OF_ADDABLE>
408 nonvirtual
unsigned int AddAll (ITERABLE_OF_ADDABLE&& items,
AddReplaceMode addReplaceMode = AddReplaceMode::eAddReplaces);
409 template <IInputIterator<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERATOR_OF_ADDABLE, sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
410 nonvirtual
unsigned int AddAll (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end,
423 nonvirtual
void Remove (ArgByValueType<key_type> key);
432 nonvirtual
bool RemoveIf (ArgByValueType<key_type> key);
445 nonvirtual
void RemoveAll ();
446 template <
typename ITERABLE_OF_KEY_OR_ADDABLE>
447 nonvirtual
size_t RemoveAll (
const ITERABLE_OF_KEY_OR_ADDABLE& items);
448 template <
typename ITERATOR_OF_KEY_OR_ADDABLE>
449 nonvirtual
size_t RemoveAll (ITERATOR_OF_KEY_OR_ADDABLE start, ITERATOR_OF_KEY_OR_ADDABLE end);
450 template <predicate<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> PREDICATE>
451 nonvirtual
size_t RemoveAll (PREDICATE&& p);
487 template <IIterableOfTo<KEY_TYPE> ITERABLE_OF_KEY_TYPE>
488 nonvirtual
void RetainAll (
const ITERABLE_OF_KEY_TYPE& items);
494 template <
typename RESULT_CONTAINER = Mapping<KEY_TYPE, MAPPED_VALUE_TYPE>, invocable<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ELEMENT_MAPPER>
495 nonvirtual RESULT_CONTAINER
Map (ELEMENT_MAPPER&& elementMapper)
const
496 requires (convertible_to<invoke_result_t<ELEMENT_MAPPER, KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>>,
typename RESULT_CONTAINER::value_type> or
497 convertible_to<invoke_result_t<ELEMENT_MAPPER, KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>>, optional<typename RESULT_CONTAINER::value_type>>)
515 template <derived_from<Iterable<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>>> RESULT_CONTAINER = Mapping<KEY_TYPE, MAPPED_VALUE_TYPE>,
typename INCLUDE_PREDICATE>
516 nonvirtual RESULT_CONTAINER
Where (INCLUDE_PREDICATE&& includeIfTrue)
const
517 requires (predicate<INCLUDE_PREDICATE, KEY_TYPE> or predicate<INCLUDE_PREDICATE, KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>>);
536 template <
typename CONTAINER_OF_KEYS>
552 template <
typename CONTAINER_OF_Key_T>
553 nonvirtual CONTAINER_OF_Key_T
As ()
const;
568 nonvirtual tuple<_IRep*, Iterator<value_type>> _GetWritableRepAndPatchAssociatedIterator (
const Iterator<value_type>& i);
571 template <
typename CONTAINER_OF_Key_T>
572 nonvirtual CONTAINER_OF_Key_T As_ ()
const;
575 template <
typename VALUE_EQUALS_COMPARER = equal_to<MAPPED_VALUE_TYPE>>
585 nonvirtual
bool operator== (
const Mapping& rhs)
const
586 requires (equality_comparable<MAPPED_VALUE_TYPE>);
594 nonvirtual
void Accumulate (
595 ArgByValueType<key_type> key, ArgByValueType<mapped_type> newValue,
596 const function<
mapped_type (ArgByValueType<mapped_type>, ArgByValueType<mapped_type>)>& f =
597 [] (ArgByValueType<mapped_type> l, ArgByValueType<mapped_type> r) ->
mapped_type {
return l + r; },
598 mapped_type initialValue = {});
608 nonvirtual
void insert (ArgByValueType<value_type> kvp);
617 nonvirtual
void erase (ArgByValueType<key_type> key);
618 nonvirtual Iterator<value_type> erase (
const Iterator<value_type>& i);
624 nonvirtual
void clear ();
629 template <IIterableOfTo<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERABLE_OF_ADDABLE>
630 nonvirtual Mapping operator+ (
const ITERABLE_OF_ADDABLE& items)
const;
635 template <IIterableOfTo<KeyValuePair<KEY_TYPE, MAPPED_VALUE_TYPE>> ITERABLE_OF_ADDABLE>
636 nonvirtual Mapping& operator+= (
const ITERABLE_OF_ADDABLE& items);
641 template <
typename ITERABLE_OF_KEY_OR_ADDABLE>
642 nonvirtual Mapping& operator-= (
const ITERABLE_OF_KEY_OR_ADDABLE& items);
647 template <
typename T2>
648 using _SafeReadRepAccessor =
typename inherited::template _SafeReadRepAccessor<T2>;
653 template <
typename T2>
654 using _SafeReadWriteRepAccessor =
typename inherited::template _SafeReadWriteRepAccessor<T2>;
657 nonvirtual
void _AssertRepValidType ()
const;