Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::multimap::insert(3)      C++ Standard Libary     std::multimap::insert(3)

NAME
       std::multimap::insert - std::multimap::insert

Synopsis
	  iterator insert( const value_type& value );	       (1)
	  iterator  insert(  value_type&&  value  );		    (1)	(since
       C++17)
	  template<  class  P  >				   (2)	(since
       C++11)
	  iterator insert( P&& value );
	  iterator     insert(	   iterator	hint,	  const	   value_type&
       (until C++11)
	  value	);
	  iterator	 insert(       const_iterator	    hint,	 const
       (since C++11)
	  value_type& value );
	  iterator   insert(   const_iterator	hint,  value_type&&	   (3)
       (since C++17)
	  value	);
	  template<   class   P	  >					   (4)
       (since C++11)
	  iterator insert( const_iterator hint,	P&& value );   (3)
	  template< class InputIt >				   (5)
	  void insert( InputIt first, InputIt last );
	  void	 insert(   std::initializer_list<value_type>   ilist	   (6)
       (since C++11)
	  );
	  iterator  insert(  node_type&&   nh	);			   (7)
       (since C++17)
	  iterator   insert(   const_iterator  hint,  node_type&&  nh	   (8)
       (since C++17)
	  );

	  Inserts element(s) into the container.

	  1-2) inserts value. If the container has  elements  with  equivalent
       key, inserts at
	  the  upper  bound  of	 that  range.(since C++11) The overload	(2) is
       equivalent to
	  emplace(std::forward<P>(value)) and only  participates  in  overload
       resolution if
	  std::is_constructible<value_type, P&&>::value	== true.
	  3-4)	inserts	 value	in  the	 position  as  close as	possible, just
       prior(since C++11), to
	  hint.	The overload (4) is equivalent to emplace_hint(hint, std::for-
       ward<P>(value))
	  and  only  participates  in  overload	 resolution  if	  std::is_con-
       structible<value_type,
	  P&&>::value == true.
	  5) inserts elements from range [first, last).
	  6) inserts elements from initializer list ilist.
	  7)  If  nh is	an empty node handle, does nothing. Otherwise, inserts
       the element owned
	  by nh	into the container and returns an iterator pointing at the in-
       serted element.
	  If a range containing	elements with keys equivalent to nh.key()  ex-
       ists in the
	  container, the element is inserted at	the end	of that	range. The be-
       havior is
	  undefined  if	 nh is not empty and get_allocator() !=	nh.get_alloca-
       tor().
	  8) If	nh is an empty node handle, does nothing and returns  the  end
       iterator.
	  Otherwise,  inserts  the element owned by nh into the	container, and
       returns the
	  iterator pointing to the element with	key equivalent to nh.key() The
       element is
	  inserted as close as possible	to the position	just  prior  to	 hint.
       The behavior is
	  undefined  if	 nh is not empty and get_allocator() !=	nh.get_alloca-
       tor().

	  No iterators or references are invalidated.
	  If the insertion is successful, pointers and references to the  ele-
       ment obtained
	  while	 it  is	 held in the node handle are invalidated, and pointers
       and references
	  obtained to that element before it was extracted become valid.
	  (since C++17)

Parameters
			iterator, used as a suggestion as to  where  to	 start
       the  (until C++11)
	  hint	      -	search
			iterator  to the position before which the new element
       (since C++11)
			will be	inserted
	  value	      -	element	value to insert
	  first, last -	range of elements to insert
	  ilist	      -	initializer list to insert the values from
	  nh	      -	a compatible node handle

Type requirements
	  -
	  InputIt must meet the	requirements of	LegacyInputIterator.

Return value
	  1-4) Returns an iterator to the inserted element.
	  5-6) (none)
	  7,8) End iterator if nh was empty, iterator pointing to the inserted
       element
	  otherwise.

Exceptions
	  1-4) If an exception is thrown by any	operation, the	insertion  has
       no effect.

	   This	section	is incomplete
	   Reason: cases 5-6

Complexity
	  1-2) Logarithmic in the size of the container, O(log(size())).

	  3-4)	Amortized  constant  if	 the insertion happens in the position
       just  (until C++11)
	  after	the hint, logarithmic in the size of the container otherwise.
	  3-4) Amortized constant if the insertion  happens  in	 the  position
       just  (since C++11)
	  before the hint, logarithmic in the size of the container otherwise.

	  5-6)	O(N*log(size() + N)), where N is the number of elements	to in-
       sert.
	  7) Logarithmic in the	size of	the container, O(log(size())).
	  8) Amortized constant	if the insertion happens in the	position  just
       before the hint,
	  logarithmic in the size of the container otherwise.

Example
       // Run this code

	#include <iostream>
	#include <string>
	#include <map>
	#include <utility>
	#include <functional>
	#include <string_view>

	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);
	}

Output:
	#1 {5,def} {3,baz} {2,foo} {2,bar} {1,abc}
	#2 {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
	#3 {6,uvw} {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
	#4 {7,xyz} {6,uvw} {5,def} {5,pqr} {3,baz} {2,foo} {2,bar} {1,abc}
	#5  {7,xyz}  {6,uvw}  {5,def}  {5,pqr} {5,one} {5,two} {3,baz} {2,foo}
       {2,bar} {1,abc}
	#6 {3,}	{2,} {2,} {1,}

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

http://cppreference.com		  2022.07.31	      std::multimap::insert(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::multimap::insert&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help