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

FreeBSD Manual Pages

  
 
  

home | help
std::map::merge(3)	      C++ Standard Libary	    std::map::merge(3)

NAME
       std::map::merge - std::map::merge

Synopsis
	  template<class   C2>						   (1)
       (since C++17)
	  void merge( std::map<Key, T, C2, Allocator>& source );
	  template<class   C2>						   (2)
       (since C++17)
	  void merge( std::map<Key, T, C2, Allocator>&&	source );
	  template<class   C2>						   (3)
       (since C++17)
	  void merge( std::multimap<Key, T, C2,	Allocator>& source );
	  template<class   C2>						   (4)
       (since C++17)
	  void merge( std::multimap<Key, T, C2,	Allocator>&& source );

	  Attempts  to extract ("splice") each element in source and insert it
       into *this using
	  the comparison object	of *this. If there is an element in *this with
       key equivalent
	  to the key of	an element from	source,	then that element is  not  ex-
       tracted from
	  source.  No elements are copied or moved, only the internal pointers
       of the container
	  nodes	are repointed. All pointers and	references to the  transferred
       elements	remain
	  valid, but now refer into *this, not into source.

	  The  behavior	 is undefined if get_allocator() != source.get_alloca-
       tor().

Parameters
	  source - compatible container	to transfer the	nodes from

Return value
	  (none)

Exceptions
	  Does not throw unless	comparison throws.

Complexity
	  N*log(size()+N)), where N is source.size().

Example
       // Run this code

	#include <map>
	#include <iostream>
	#include <string>

	int main()
	{
	  std::map<int,	std::string> ma	{{1, "apple"}, {5, "pear"}, {10,  "ba-
       nana"}};
	  std::map<int,	 std::string>  mb  {{2,	 "zorro"},  {4,	"batman"}, {5,
       "X"}, {8, "alpaca"}};
	  std::map<int,	std::string> u;
	  u.merge(ma);
	  std::cout << "ma.size(): " <<	ma.size() << '\n';
	  u.merge(mb);
	  std::cout << "mb.size(): " <<	mb.size() << '\n';
	  std::cout << "mb.at(5): " << mb.at(5)	<< '\n';
	  for(auto const &kv: u)
	    std::cout << kv.first << ",	" << kv.second << '\n';
	}

Output:
	ma.size(): 0
	mb.size(): 1
	mb.at(5): X
	1, apple
	2, zorro
	4, batman
	5, pear
	8, alpaca
	10, banana

See also
	  extract extracts nodes from the container
	  (C++17) (public member function)
		  inserts elements
	  insert  or nodes
		  (since C++17)
		  (public member function)

http://cppreference.com		  2022.07.31		    std::map::merge(3)

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

home | help