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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::list::merge	- std::list::merge

Synopsis
	  void merge( list& other );		    (1)
	  void merge( list&& other );		    (1)	(since C++11)
	  template <class Compare>		    (2)
	  void merge( list& other, Compare comp	);
	  template <class Compare>		    (2)	(since C++11)
	  void merge( list&& other, Compare comp );

	  Merges  two  sorted  lists into one. The lists should	be sorted into
       ascending order.

	  No elements are copied. The container	other becomes empty after  the
       operation. The
	  function  does  nothing if other refers to the same object as	*this.
       If
	  get_allocator() != other.get_allocator(), the	behavior is undefined.
       No iterators or
	  references become invalidated, except	that the  iterators  of	 moved
       elements	now refer
	  into *this, not into other. The first	version	uses operator< to com-
       pare the
	  elements,  the  second  version  uses	 the given comparison function
       comp.

	  This operation is stable: for	equivalent elements in the two	lists,
       the elements
	  from *this shall always precede the elements from other, and the or-
       der of equivalent
	  elements of *this and	other does not change.

Parameters
	  other	- another container to merge
		  comparison  function	object	(i.e. an object	that satisfies
       the requirements
		  of Compare) which returns true if the	first argument is less
       than (i.e.
		  is ordered before) the second.

		  The signature	of the comparison function should  be  equiva-
       lent to the
		  following:

		  bool cmp(const Type1 &a, const Type2 &b);
	  comp	-
		  While	the signature does not need to have const &, the func-
       tion must not
		  modify  the  objects passed to it and	must be	able to	accept
       all values of
		  type (possibly const)	Type1 and Type2	 regardless  of	 value
       category	(thus,
		  Type1	& is not allowed
		  ,  nor  is  Type1 unless for Type1 a move is equivalent to a
       copy
		  (since C++11)).
		  The types Type1 and Type2 must be such  that	an  object  of
       type
		  list<T,Allocator>::const_iterator  can  be  dereferenced and
       then implicitly
		  converted to both of them.

Return value
	  (none)

Exceptions
	  If an	exception is thrown, this function has no effect  (strong  ex-
       ception guarantee),
	  except if the	exception comes	from the comparison function.

Complexity
	  At most std::distance(begin(), end())	+ std::distance(other.begin(),
       other.end()) -
	  1 comparisons.

Example
       // Run this code

	#include <iostream>
	#include <list>

	std::ostream&  operator<<(std::ostream&	 ostr,	const  std::list<int>&
       list)
	{
	    for	(const auto &i : list) {
		ostr <<	' ' << i;
	    }
	    return ostr;
	}

	int main()
	{
	    std::list<int> list1 = { 5,9,1,3,3 };
	    std::list<int> list2 = { 8,7,2,3,4,4 };

	    list1.sort();
	    list2.sort();
	    std::cout << "list1:  " << list1 <<	'\n';
	    std::cout << "list2:  " << list2 <<	'\n';
	    list1.merge(list2);
	    std::cout << "merged: " << list1 <<	'\n';
	}

Output:
	list1:	 1 3 3 5 9
	list2:	 2 3 4 4 7 8
	merged:	 1 2 3 3 3 4 4 5 7 8 9

See also
	  splice		moves elements from another list
				(public	member function)
	  merge			merges two sorted ranges
				(function template)
	  inplace_merge		merges two ordered ranges in-place
				(function template)
	  ranges::merge		merges two sorted ranges
	  (C++20)		(niebloid)
	  ranges::inplace_merge	merges two ordered ranges in-place
	  (C++20)		(niebloid)

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

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

home | help