Man Page swap_ranges.3



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



NAME

     swap_ranges

      - Exchanges a range of values in one location with those in
     another.





SYNOPSIS

     #include <algorithm>
     template <class ForwardIterator1, class ForwardIterator2>
      ForwardIterator2
         swap_ranges (ForwardIterator1 first1,
                     ForwardIterator1 last1,
                     ForwardIterator2 first2);





DESCRIPTION

     The swap_ranges algorithm exchanges corresponding values  in
     two ranges, in the following manner:

     For each non-negative integer n < (last - first), the  func-
     tion exchanges *(first1 + n) with *(first2 + n)). After com-
     pleting all exchanges, swap_ranges returns an iterator  that
     points  to  the end of the second container (in other words,
     first2 + (last1 -first1)).  The  result  of  swap_ranges  is
     undefined  if  the  two  ranges  [first,  last) and [first2,
     first2 + (last1 - first1)) overlap.





EXAMPLE

     //
     // swap.cpp
     //
     #include <vector>
     #include <algorithm>
     #include <iostream>
     using namespace std;

     int main()
     {
     int d1[] = {6, 7, 8, 9, 10, 1, 2, 3, 4, 5};
     // Set up a vector
     vector<int> v(d1+0,d1 + 10);

     // Output original vector
     cout << "For the vector: ";
     copy(v.begin(),v.end(),
         ostream_iterator<int,char>(cout," "));

     // Swap the first five elements with the last five elements
     swap_ranges(v.begin(),v.begin()+5, v.begin()+5);
     // Output result
     cout << endl << endl
     << "Swapping the first five elements "
     << "with the last five gives: "
     << endl << "     ";
     copy(v.begin(),v.end(),
         ostream_iterator<int,char>(cout," "));
     return 0;
     }

     Program Output




     For the vector: 6 7 8 9 10 1 2 3 4 5
     Swapping the first five elements with the last five gives:
     1 2 3 4 5 6 7 8 9 10
     Swapping the first and last elements gives:
     10 2 3 4 5 6 7 8 9 1





WARNINGS

     If your compiler does not support default  template  parame-
     ters, you always need to supply the Allocator template argu-
     ment. For instance, you need 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

     iter_swap, swap