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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::flat_map::insert - std::flat_map::insert

Synopsis
	  std::pair<iterator,	bool>	insert(	 const	value_type&  value  );
       (1)  (since C++23)
	  std::pair<iterator,	bool>	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)
	  std::pair<iterator, bool> 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		     >
       (8)  (since C++23)
	  void insert( std::sorted_unique_t, InputIt first, InputIt last );
	  void	   insert(     std::initializer_list<key_type>	   ilist    );
       (9)  (since C++23)
	  void		 insert(	    std::sorted_unique_t	    s,
       (10) (since C++23)
	  std::initializer_list<key_type> ilist	);

	  Inserts element(s) into the container, if the	container does not al-
       ready contain an
	  element with an equivalent key.

	  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 posi-
       tion just prior to
	  pos. Equivalent to return emplace_hint(pos, value);.
	  4) Inserts value in the position as close as possible	to  the	 posi-
       tion just prior to
	  pos. Equivalent to return emplace_hint(pos, std::move(value));.
	  5) If	*this already contains an element which	transparently compares
       equivalent to
	  x, does nothing. Otherwise, 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) If	*this already contains an element which	transparently compares
       equivalent to
	  x,  does nothing. Otherwise, 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  partici-
       pates 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.
	   4. Erases the duplicate elements as if by:
	      auto zv =	std::views::zip(c.keys,	c.values);
	      auto it =	ranges::unique(zv, key_equiv(compare)).begin();
	      auto dist	= std::distance(zv.begin(), it);
	      c.keys.erase(c.keys.begin() + dist, c.keys.end());
	      c.values.erase(c.values.begin() +	dist, c.values.end());
	  May allocate memory during the in-place merge	operation.
	  If multiple elements in the range have keys that compare equivalent,
       it is
	  unspecified which element is inserted	(pending LWG2844).
	  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.
	   3. Erases the duplicate elements as if by:
	      auto zv =	std::views::zip(c.keys,	c.values);
	      auto it =	ranges::unique(zv, key_equiv(compare)).begin();
	      auto dist	= std::distance(zv.begin(), it);
	      c.keys.erase(c.keys.begin() + dist, c.keys.end());
	      c.values.erase(c.values.begin() +	dist, c.values.end());
	  May allocate memory during the in-place merge	operation.
	  If multiple elements in the range have keys that compare equivalent,
       it is
	  unspecified which element is inserted	(pending LWG2844).
	  9)  Inserts  elements	from initializer list ilist. Equivalent	to in-
       sert(ilist.begin(),
	  ilist.end());.
	  If multiple elements in the range have keys that compare equivalent,
       it is
	  unspecified which element is inserted	(pending LWG2844).
	  10) Inserts elements from initializer	list ilist. Equivalent to  in-
       sert(s,
	  ilist.begin(), ilist.end());.
	  If multiple elements in the range have keys that compare equivalent,
       it is
	  unspecified which element is inserted	(pending LWG2844).

	   Information on iterator invalidation	is copied from here

Parameters
	  pos	       - an iterator to	the position before which the new ele-
       ment 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  se-
       quence is sorted
			(with  respect	to  value_comp())  and	contains  only
       unique elements

Type requirements
	  -
	  InputIt must meet the	requirements of	LegacyInputIterator.

Return value
	  1,2) A pair consisting of an iterator	to the inserted	element	(or to
       the element
	  that prevented the insertion)	and a bool value set to	 true  if  and
       only if the
	  insertion took place.
	  3,4)	An  iterator  to  the inserted element,	or to the element that
       prevented the
	  insertion.
	  5) A pair consisting of an iterator to the inserted element  (or  to
       the element that
	  prevented the	insertion) and a bool value set	to true	if and only if
       the insertion
	  took place.
	  6)  An iterator to the inserted element, or to the element that pre-
       vented the
	  insertion.
	  7-10)	(none)

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

	   This	section	is incomplete
	   Reason: cases 7-10

Complexity
	  1-6) Linear in size().
	  7) N + Mlog(M), where	N is the size()	before the operation and M is
	  std::distance(first, last).
	  8) Linear in size().
	  9)  N	+ Mlog(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.

Notes
	  The hinted insert (3,4,6) does not return a boolean in order to be
	  signature-compatible with positional insert on  sequential  contain-
       ers, such as
	  std::vector::insert.	This  makes  it	possible to create generic in-
       serters such as
	  std::inserter. One way to check success of a	hinted	insert	is  to
       compare size()
	  before and after.

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)
			   inserts  an	element	or assigns to the current ele-
       ment if the key
	  insert_or_assign already exists
			   (public member function)
	  inserter	   creates a  std::insert_iterator  of	type  inferred
       from the	argument
			   (function template)

Categories:
	    * Todo with	reason
	    * Todo no example

http://cppreference.com		  2024.06.10	      std::flat_map::insert(3)

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

home | help