std::multimap<Key,T,Compare,Allocator>::insert

Inserts element(s) into the container.

# Declarations

iterator insert( const value_type& value );
iterator insert( value_type&& value );

(since C++17)

template< class P >
iterator insert( P&& value );

(since C++11)

iterator insert( iterator pos, const value_type& value );

(until C++11)

iterator insert( const_iterator pos, const value_type& value );

(since C++11)

iterator insert( const_iterator pos, value_type&& value );

(since C++17)

template< class P >
iterator insert( const_iterator pos, P&& value );

(since C++11)

template< class InputIt >
void insert( InputIt first, InputIt last );
void insert( std::initializer_list<value_type> ilist );

(since C++11)

iterator insert( node_type&& nh );

(since C++17)

iterator insert( const_iterator pos, node_type&& nh );

(since C++17)

# Parameters

# Example

#include <functional>
#include <iostream>
#include <map>
#include <string>
#include <string_view>
#include <utility>
 
template<class M>
void print(const std::string_view rem, const M& mmap)
{
    std::cout << rem << ' ';
    for (const auto& e : mmap)
        std::cout << '{' << e.first << ',' << e.second << "} ";
    std::cout << '\n';
}
 
int main()
{
    // list-initialize
    std::multimap<int, std::string, std::greater<int>> mmap
        {{2, "foo"}, {2, "bar"}, {3, "baz"}, {1, "abc"}, {5, "def"}};
    print("#1", mmap);
 
    // insert using value_type
    mmap.insert(decltype(mmap)::value_type(5, "pqr"));
    print("#2", mmap);
 
    // insert using pair
    mmap.insert(std::pair{6, "uvw"});
    print("#3", mmap);
 
    mmap.insert({7, "xyz"});
    print("#4", mmap);
 
    // insert using initializer_list
    mmap.insert({{5, "one"}, {5, "two"}});
    print("#5", mmap);
 
    // insert using a pair of iterators
    mmap.clear();
    const auto il = {std::pair{1, "ä"}, {2, "ё"}, {2, "ö"}, {3, "ü"}};
    mmap.insert(il.begin(), il.end());
    print("#6", mmap);
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 233C++98pos was just a hint, it could be totally ignoredthe insertion is required tobe as close as possible to theposition just prior to pos
LWG 264C++98the complexity of overload (5) was required to be linear ifthe range [first, last) is sorted according to Compareremoved the linear requirementin this special case
LWG 371C++98the order of equivalent elementswas not guaranteed to be preservedrequired to be preserved
LWG 2005C++11overloads (3,6) were poorly describedimproved the description

# See also