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

FreeBSD Manual Pages

  
 
  

home | help
std::flat_m...insert_range(3) C++ Standard Libarystd::flat_m...insert_range(3)

NAME
       std::flat_map::insert_range - std::flat_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 into underlying con-
       tainers c as if
	  by:

	for (const auto& e : rg)
	{
	    c.keys.insert(c.keys.end(),	e.first);
	    c.values.insert(c.values.end(), e.second);
	}

	  Then,	sorts the range	of newly inserted  elements  with  respect  to
       value_comp().
	  Merges the resulting sorted range and	the sorted range of pre-exist-
       ing elements into
	  a  single sorted range. Finally, erases the duplicate	elements as if
       by:

	auto zv	= 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());

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

	   Information on iterator invalidation	is copied from here

Parameters
	  rg - a container compatible range, that is, an input_range whose el-
       ements are
	       convertible to T

Return value
	  (none)

Complexity
	  N  +	Mlog(M),  where	 N  is	size()	before	the operation and M is
       ranges::distance(rg).

Notes
	  Since	insert_range performs an in-place merge	 operation,  that  may
       allocate	memory.

Example
       // Run this code

	#include <iostream>
	#include <flat_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::flat_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);
	}

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

See also
	  insert inserts elements
		 (public member	function)

http://cppreference.com		  2024.06.10	 std::flat_m...insert_range(3)

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

home | help