cplusplus.com cplusplus.com
cplusplus.com   C++ : Reference : STL Algorithms : rotate_copy
 
- -
C++
Information
Documentation
Reference
Articles
Sourcecode
Forum
Reference
C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
STL Algorithms
algorithm:
· adjacent_find
· binary_search
· copy
· copy_backward
· count
· count_if
· equal
· equal_range
· fill
· fill_n
· find
· find_end
· find_first_of
· find_if
· for_each
· generate
· generate_n
· includes
· inplace_merge
· iter_swap
· lexicographical_compare
· lower_bound
· make_heap
· max
· max_element
· merge
· min
· min_element
· mismatch
· next_permutation
· nth_element
· partial_sort
· partial_sort_copy
· partition
· pop_heap
· prev_permutation
· push_heap
· random_shuffle
· remove
· remove_copy
· remove_copy_if
· remove_if
· replace
· replace_copy
· replace_copy_if
· replace_if
· reverse
· reverse_copy
· rotate
· rotate_copy
· search
· search_n
· set_difference
· set_intersection
· set_symmetric_difference
· set_union
· sort
· sort_heap
· stable_partition
· stable_sort
· swap
· swap_ranges
· transform
· unique
· unique_copy
· upper_bound

-

rotate_copy function template
template <class ForwardIterator, class OutputIterator>
  OutputIterator rotate_copy ( ForwardIterator first, ForwardIterator middle,
                               ForwardIterator last, OutputIterator result );
<algorithm>

Copy rotated range

Copies the values of the elements in the range [first,last) to the range positions beginning at result, but rotating the order of the elements in such a way that the element pointed by middle becomes the first element in the resulting range.

The behavior of this function template is equivalent to:

template <class ForwardIterator, class OutputIterator>
  OutputIterator rotate_copy ( ForwardIterator first, ForwardIterator middle,
                               ForwardIterator last, OutputIterator result )
{
  result=copy (middle,last,result);
  return copy (first,middle,result);
}

Parameters

first, last
Forward iterators to the initial and final positions of the range to be copied rotated. The range used is [first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.
Notice that in this function, these are not consecutive parameters, but the first and third ones.
middle
Forward iterator pointing to the element within the range [first,last) that is copied as the first element in the resulting range.

Return value

An output iterator pointing to the end of the copied range.

Example

// rotate_copy algorithm example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main () {
  int myints[] = {10,20,30,40,50,60,70};

  vector<int> myvector;
  vector<int>::iterator it;

  myvector.resize(7);

  rotate_copy(myints,myints+3,myints+7,myvector.begin());

  // print out content:
  cout << "myvector contains:";
  for (it=myvector.begin(); it!=myvector.end(); ++it)
    cout << " " << *it;

  cout << endl;

  return 0;
}

Output:

myvector contains: 40 50 60 70 10 20 30

Complexity

Linear: Performs as many assignment operations as the length of range [first,last).

See also

rotate Rotate elements in range (function template)
reverse_copy Copy range reversed (function template)
random_shuffle Rearrangle elements in range randomly (function template)
copy Copy range of elements (function template)
© The C++ Resources Network, 2000-2007 - All rights reserved
Spotted an error? - contact us