inplace_merge man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

inplace_merge(3C++)		       -		   inplace_merge(3C++)

Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.

NAME
       inplace_merge

	- Merges two sorted sequences into one.

SYNOPSIS
       #include <algorithm>
       template <class BidirectionalIterator>
 void inplace_merge(BidirectionalIterator first,
		    BidirectionalIterator middle,
		    BidirectionalIterator last);

template <;class BidirectionalIterator, class Compare>
 void inplace_merge(BidirectionalIterator first,
		    BidirectionalIterator middle,
		    BidirectionalIterator last,
		    Compare comp);

DESCRIPTION
       The  inplace_merge  algorithm  merges  two  sorted  consecutive	ranges
       [first, middle) and [middle, last), and puts the result	of  the	 merge
       into  the range [first, last). The merge is stable, which means that if
       the two ranges contain equivalent elements, the elements from the first
       range always precede the elements from the second.

       There  are  two versions of the inplace_merge algorithm. The first ver‐
       sion uses the less than operator (operator<) as the default for compar‐
       ison,  and the second version accepts a third argument that specifies a
       comparison operator.

COMPLEXITY
       When enough additional memory is available, inplace_merge does at  most
       (last  -	 first) - 1 comparisons. If no additional memory is available,
       an algorithm with O(NlogN) complexity (where N is equal to  last-first)
       may be used.

EXAMPLE
//
// merge.cpp
//
 #include <algorithm>
 #include <vector>
 #include <functional>
 #include <iostream>
using namespace std;

int main()
 {
  int d1[4] = {1,2,3,4};
  int d2[8] = {11,13,15,17,12,14,16,18};

   // Set up two vectors
  vector<int> v1(d1,d1 + 4), v2(d1,d1 + 4);

   // Set up four destination vectors
  vector<int> v3(d2,d2 + 8),v4(d2,d2 + 8),
	      v5(d2,d2 + 8),v6(d2,d2 + 8);
   // Set up one empty vector
  vector<int> v7;
   // Merge v1 with v2
  merge(v1.begin(),v1.end(),v2.begin(),v2.end(),
	v3.begin());
   // Now use comparator
  merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v4.begin(),
	less<int>());
   // In place merge v5
  vector<int>::iterator mid = v5.begin();
  advance(mid,4);
   inplace_merge(v5.begin(),mid,v5.end());
   // Now use a comparator on v6
  mid = v6.begin();
  advance(mid,4);
   inplace_merge(v6.begin(),mid,v6.end(),less<int>());
   // Merge v1 and v2 to empty vector using insert iterator
  merge(v1.begin(),v1.end(),v2.begin(),v2.end(),
	back_inserter(v7));
   // Copy all cout
  ostream_iterator<int,char> out(cout," ");
  copy(v1.begin(),v1.end(),out);
  cout << endl;
  copy(v2.begin(),v2.end(),out);
  cout << endl;
  copy(v3.begin(),v3.end(),out);
  cout << endl;
  copy(v4.begin(),v4.end(),out);
  cout << endl;
  copy(v5.begin(),v5.end(),out);
  cout << endl;
  copy(v6.begin(),v6.end(),out);
  cout << endl;
  copy(v7.begin(),v7.end(),out);
  cout << endl;

   // Merge v1 and v2 to cout
  merge(v1.begin(),v1.end(),v2.begin(),v2.end(),
	ostream_iterator<int,char>(cout," "));
  cout << endl;
  return 0;
 }

Program Output

1 2 3 4
1 2 3 4
1 1 2 2 3 3 4 4
1 1 2 2 3 3 4 4
11 12 13 14 15 16 17 18
11 12 13 14 15 16 17 18
1 1 2 2 3 3 4 4
1 1 2 2 3 3 4 4

WARNINGS
       If your compiler does not support default template parameters, then you
       always need to supply the Allocator template  argument.	For  instance,
       you have to write:

       vector<int, allocator,int> >

       instead of:

       vector<int>

       If  your compiler does not support namespaces, then you do not need the
       using declaration for std.

SEE ALSO
       merge

Rogue Wave Software		  02 Apr 1998		   inplace_merge(3C++)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net