Scroll to navigation

std::flat_multimap::insert(3) C++ Standard Libary std::flat_multimap::insert(3)

NAME

std::flat_multimap::insert - std::flat_multimap::insert

Synopsis


iterator insert( const value_type& value ); (1) (since C++23)
iterator insert( value_type&& value ); (2) (since C++23)
iterator insert( const_iterator pos, const value_type& value ); (3) (since C++23)
iterator insert( const_iterator pos, value_type&& value ); (4) (since C++23)
template< class P > (5) (since C++23)
iterator insert( P&& x );
template< class P > (6) (since C++23)
iterator insert( const_iterator pos, P&& x );
template< class InputIt > (7) (since C++23)
void insert( InputIt first, InputIt last );
template< class InputIt >
void insert( std::sorted_equivalent_t, InputIt first, InputIt (8) (since C++23)
last );
void insert( std::initializer_list<key_type> ilist ); (9) (since C++23)
void insert( std::sorted_equivalent_t s, (10) (since C++23)
std::initializer_list<key_type> ilist );


Inserts element(s) into the container.


1) Inserts value. Equivalent to return emplace(value);.
2) Inserts value. Equivalent to return emplace(std::move(value));.
3) Inserts value in the position as close as possible to the position just prior to
pos. Equivalent to return emplace_hint(pos, value);.
4) Inserts value in the position as close as possible to the position just prior to
pos. Equivalent to return emplace_hint(pos, std::move(value));.
5) Inserts x into *this as if by emplace(std::forward<P>(x));. This overload
participates in overload resolution only if std::is_constructible_v<pair<key_type,
mapped_type>, P> is true.
6) Inserts x into *this in the position as close as possible to the position just
prior to pos. Equivalent to return emplace_hint(position, std::forward<P>(x));. This
overload participates in overload resolution only if
std::is_constructible_v<pair<key_type, mapped_type>, P> is true.
7) Inserts elements from range [first, last) as if performing the following
operations sequentially:
1. Adds elements to c as if by
for (; first != last; ++first)
{
value_type value = *first;
c.keys.insert(c.keys.end(), std::move(value.first));
c.values.insert(c.values.end(), std::move(value.second));
}
2. Sorts the range of newly inserted elements with respect to value_comp.
3. Merges the resulting sorted range and the sorted range of pre-existing elements
into a single sorted range.
May allocate memory during the in-place merge operation.
8) Inserts elements from range [first, last) as if performing the following
operations sequentially:
1. Adds elements to c as if by
for (; first != last; ++first)
{
value_type value = *first;
c.keys.insert(c.keys.end(), std::move(value.first));
c.values.insert(c.values.end(), std::move(value.second));
}
2. Merges the sorted range of newly added elements and the sorted range of
pre-existing elements into a single sorted range.
May allocate memory during the in-place merge operation.
9) Inserts elements from initializer list ilist. Equivalent to insert(ilist.begin(),
ilist.end());.
10) Inserts elements from initializer list ilist. Equivalent to insert(s,
ilist.begin(), ilist.end());.


Information on iterator invalidation is copied from here

Parameters


pos - an iterator to the position before which the new element will be
inserted
value - an element value to insert
first, last - a range of elements to insert
ilist - an initializer list to insert the values from
x - a value of any type that can be transparently compared with a key
s - a disambiguation tag indicating that the input sequence is sorted
(with respect to value_comp())

Type requirements


-
InputIt must meet the requirements of LegacyInputIterator.

Return value


1-6) An iterator to the inserted element.
7-10) (none)

Exceptions


1-6) If an exception is thrown by any operation, the insertion has no effect.
7-10) No exception safety guarantee. (?)


This section is incomplete
Reason: double check cases 7-10

Complexity


1-6) Linear in size().
7) N + M·log(M), where N is the size() before the operation and M is
std::distance(first, last).
8) Linear in size().
9) N + M·log(M), where N is the size() before the operation and M is ilist.size().
10) Linear in N, where N is size() after the operation.

Example


This section is incomplete
Reason: no example

See also


emplace constructs element in-place
(public member function)
emplace_hint constructs elements in-place using a hint
(public member function)
inserter creates a std::insert_iterator of type inferred from the argument
(function template)

Categories:


* Todo with reason
* Todo no example

2024.06.10 http://cppreference.com