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

FreeBSD Manual Pages

  
 
  

home | help
std::unorde...nsert_range(3)  C++ Standard Libary std::unorde...nsert_range(3)

NAME
       std::unordered_map::insert_range	- std::unordered_map::insert_range

Synopsis
	  template< container-compatible-range<value_type> R >	(since C++23)
	  void insert_range( R&& rg );

	  Inserts  a copy of each element in the range rg if and only if there
       is no element
	  with key equivalent to the key of that element in *this.

	  Each iterator	in the range rg	is dereferenced	exactly	once. The  be-
       havior is
	  undefined if rg overlaps with	the container.

	  If  after  the  operation the	new number of elements is greater than
       old
	  max_load_factor() * bucket_count() a rehashing takes place.
	  If rehashing occurs (due to the insertion), all iterators are	inval-
       idated. Otherwise
	  (no rehashing), iterators are	not invalidated.

Parameters
	  rg	    -	     a container compatible range,  that  is,  an  in-
       put_range whose
			     elements are convertible to T

Type requirements
	  -
	  value_type  must  be	EmplaceConstructible  into  unordered_map from
       *ranges::begin(rg).
	  Otherwise, the behavior is undefined.

Return value
	  (none)

Complexity
	  Average case O(N),  where  N	is  ranges::distance(rg),  worst  case
       O(N(a.size() + 1)).

Notes
	      Feature-test macro       Value	Std		      Feature
	  __cpp_lib_containers_ranges  202202L	(C++23)	Ranges-aware construc-
       tion and	insertion

Example
       // Run this code

	#include <iostream>
	#include <unordered_map>
	#include <utility>

	void println(auto, auto	const& container)
	{
	    for	(const auto& [key, value] : container)
		std::cout << '{' << key	<< ',' << value	<< '}' << ' ';
	    std::cout << '\n';
	}

	int main()
	{
	    auto container = std::unordered_map{std::pair{1, 11}, {3, 33}, {2,
       22}, {4,	44}};
	    const auto rg = {std::pair{-1, -11}, {3, -33}, {-2,	-22}};
	#ifdef __cpp_lib_containers_ranges
	    container.insert_range(rg);
	#else
	    container.insert(rg.begin(), rg.end());
	#endif
	    println("{}", container);
	}

Possible output:
	{4,44} {-1,-11}	{2,22} {3,33} {-2,-22} {1,11}

See also
		 inserts elements
	  insert or nodes
		 (since	C++17)
		 (public member	function)

http://cppreference.com		  2024.06.10	  std::unorde...nsert_range(3)

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

home | help