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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::multiset::merge - std::multiset::merge

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

	  Attempts  to extract ("splice") each element in source and insert it
       into *this using
	  the comparison object	of *this.

	  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_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 <iostream>
	#include <set>

	// print out a container
	template <class	Os, class K>
	Os& operator<<(Os& os, const std::multiset<K>& v) {
	    os << '[' << v.size() << "]	{";
	    bool o{};
	    for	(const auto& e : v)
		os << (o ? ", "	: (o = 1, " "))	<< e;
	    return os << " }\n";
	}

	int main()
	{
	    std::multiset<char>
		p{ 'C',	'B', 'B', 'A' },
		q{ 'E',	'D', 'E', 'C' };

	    std::cout << "p: " << p << "q: " <<	q;

	    p.merge(q);

	    std::cout << "p.merge(q);\n" << "p:	" << p << "q: "	<< q;
	}

Output:
	p: [4] { A, B, B, C }
	q: [4] { C, D, E, E }
	p.merge(q);
	p: [8] { A, B, B, C, C,	D, E, E	}
	q: [0] { }

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::multiset::merge(3)

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

home | help