VOOZH about

URL: https://www.geeksforgeeks.org/cpp/merge-in-cpp-stl/

⇱ merge() in C++ STL - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

merge() in C++ STL

Last Updated : 20 Jan, 2026

C++ STL provides a merge() function to merge two sorted containers into a single sorted container. It is defined in the <algorithm> header and has two main implementations.

Syntax 1: Using default operator

template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator merge(InputIterator1 beg1, InputIterator1 end1,
InputIterator2 beg2, InputIterator2 end2,
OutputIterator res);

Parameters:

  • beg1: Input iterator pointing to the first element of the first sequence.
  • end1: Input iterator pointing one past the last element of the first sequence.
  • beg2: Input iterator pointing to the first element of the second sequence.
  • end2: Input iterator pointing one past the last element of the second sequence.
  • res: Output iterator pointing to the first position of the resultant container where the merged elements will be stored.

Return value: Returns an iterator pointing to the element past the last element of the resulting merged container.

Code:


Output
The container after merging initial containers is : 1 1 2 2 3 4 5 6 6 7 

Syntax 2 : Using comparator function 

template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
OutputIterator merge(InputIterator1 beg1, InputIterator1 end1,
InputIterator2 beg2, InputIterator2 end2,
OutputIterator res, Compare comp);

Parameters:

  • beg1 : Input iterator pointing to the first element of the first sequence.
  • end1 : Input iterator pointing one past the last element of the first sequence.
  • beg2 : Input iterator pointing to the first element of the second sequence.
  • end2 : Input iterator pointing one past the last element of the second sequence.
  • res : Output iterator pointing to the first position of the resultant container.
  • comp : Comparator function or function object that returns true/false when comparing two elements. It accepts two arguments and does not modify them.

Return value: Returns an iterator pointing to the element past the last element of the merged container.

Code:

Output :

The container after reverse merging initial containers is : 7 6 6 5 4 3 2 2 1 1 

Possible application : The merge function can be used to make a single stack of two stacks available in sorted order. These can be stack of books or notes. Let us discuss a simple example that merge orders two stack of notes in ascending order into one on basis of its value. 


Output
The original 1st stack : 50 20 10 100 2000 
The original 2nd stack : 500 2000 10 100 50 
The resultant stack of notes is : 10 10 20 50 50 100 100 500 2000 2000 
Comment
Article Tags: