Create a map, and insert each value_type object in the sequence starting at the specified first element, and ending immediately before the specified last element, ignoring those objects having a key equivalent to that which appears earlier in the sequence. Optionally specify a comparator used to order key-value pairs contained in this object. If comparator is not supplied, a default-constructed object of the (template parameter) type COMPARATOR is used. Optionally specify a basicAllocator used to supply memory. If basicAllocator is not supplied, a default-constructed object of the (template parameter) type ALLOCATOR is used. If the type ALLOCATOR is bsl::allocator (the default), then basicAllocator, if supplied, shall be convertible to bslma::Allocator *. If the type ALLOCATOR is bsl::allocator and basicAllocator is not supplied, the currently installed default allocator is used. If the sequence first to last is ordered according to comparator, then this operation has O[N] complexity, where N is the number of elements between first and last; otherwise, this operation has O[N * log(N)] complexity.
Declared in <bslstl_map.h>
template<class INPUT_ITERATOR>
map(
INPUT_ITERATOR first,
INPUT_ITERATOR last,
COMPARATOR const& comparator = COMPARATOR(),
ALLOCATOR const& basicAllocator = ALLOCATOR());
The (template parameter) type INPUT_ITERATOR shall meet the requirements of an input iterator defined in the C++11 standard [input.iterators]providing access to values of a type convertible to value_type, and value_type must be emplace-constructible from *i into this map, where i is a dereferenceable iterator in the range [first .. last)] (see {Requirements on KEY and VALUE}). The behavior is undefined unless first and last refer to a sequence of valid values where first is at a position at or before last.