United States    
COMPAQ STORE | PRODUCTS | SERVICES | SUPPORT
| CONTACT US | SEARCH
C++
reverse_copy (3C++std) - Tru64 UNIX
Standard C++ Library
Copyright 1996, Rogue Wave Software, Inc.

NAME

  reverse_copy  - Reverse the order of elements in a collection while copying
  them to a new collecton.

SYNOPSIS

  #include <algorithm>

  template <class BidirectionalIterator, class OutputIterator>
  OutputIterator reverse_copy (BidirectionalIterator first,
                              BidirectionalIterator last,
                              OutputIterator result);

DESCRIPTION

  The reverse_copy algorithm copies the range [first, last) to the range
  [result, result + (last - first)) such that for any non- negative integer i
  < (last - first), the following assignment takes  place:

   *(result + (last - first) -i) = *(first + i)

  reverse_copy returns result + (last -  first). The ranges [first,  last)
  and [result, result + (last - first)) must not overlap.

COMPLEXITY

  reverse_copy performs exactly (last -  first) assignments.

EXAMPLE

  //
  // reverse.cpp
  //
   #include <algorithm>
   #include <vector>
   #include <iostream.h>

  int main ()
   {
     //
     // Initialize a vector with an array of integers.
     //
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    vector<int> v(arr+0, arr+10);
     //
     // Print out elements in original (sorted) order.
     //
    cout << "Elements before reverse: " << endl << "     ";
    copy(v.begin(), v.end(), ostream_iterator<int,char>(cout," "));
    cout << endl << endl;
     //
     // Reverse the ordering.
     //
    reverse(v.begin(), v.end());
     //
     // Print out the reversed elements.
     //
    cout << "Elements after reverse: " << endl << "     ";
    copy(v.begin(), v.end(), ostream_iterator<int,char>(cout," "));
    cout << endl << endl;

    cout << "A reverse_copy to cout: " << endl << "     ";
     reverse_copy(v.begin(), v.end(),
                     ostream_iterator<int,char>(cout, " "));
    cout << endl;

    return 0;
   }

  Output :
  Elements before reverse:
      1 2 3 4 5 6 7 8 9 10
  Elements after reverse:
      10 9 8 7 6 5 4 3 2 1
  A reverse_copy to cout:
      1 2 3 4 5 6 7 8 9 10

WARNING

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

  vector<int, allocator<int> >

  instead of :

  vector<int>

SEE ALSO

  reverse

STANDARDS CONFORMANCE

  ANSI X3J16/ISO WG21 Joint C++ Committee
  

1.800.AT.COMPAQ

privacy and legal statement