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 extracted
     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 ele-
     ments remain
	valid, but now refer into *this, not into source.

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

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 <iostream>
      #include <map>
      #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 	   2024.06.10		      std::map::merge(3)

home | help