A flat_map is a container adaptor
that provides an associative container interface
that supports unique keys
(i.e., contains at most one of each key value) and
provides for fast retrieval of values of another type T
based on the keys.
the time complexity of the operations that insert or erase a single
element from the map is linear, including the ones that take an insertion
position iterator.
Descriptions are provided here only for operations on flat_map that
are not described in one of those sets of requirements or for operations where
there is additional semantic information.
Any type C
that meets the sequence container requirements ([sequence.reqmts])
can be used to instantiate flat_map,
as long as
C::iterator meets the Cpp17RandomAccessIterator requirements and
invocations of
member functions C::size and C::max_size do not exit via an exception.
In particular, vector ([vector]) and deque ([deque])
can be used.
The effect of calling a constructor
that takes
both key_container_type and mapped_container_type arguments with
containers of different sizes is undefined.
The effect of calling a constructor or member function
that takes a sorted_unique_t argument with
a container, containers, or range
that is not sorted with respect to key_comp(), or
that contains equal elements,
is undefined.