Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/algorithm/rotate copy"

From cppreference.com
< cpp‎ | algorithm
m (Text replace - "{{eq fun cpp" to "{{eq fun")
m (Text replace - "putIterator" to "putIt")
Line 4: Line 4:
 
{{ddcl list header | algorithm}}
 
{{ddcl list header | algorithm}}
 
{{ddcl list item |
 
{{ddcl list item |
template< class ForwardIterator, class OutputIterator >
+
template< class ForwardIterator, class OutputIt >
OutputIterator rotate_copy( ForwardIterator first, ForwardIterator n_first,
+
OutputIt rotate_copy( ForwardIterator first, ForwardIterator n_first,
                             ForwardIterator last, OutputIterator d_first );
+
                             ForwardIterator last, OutputIt d_first );
 
}}
 
}}
 
{{ddcl list end}}
 
{{ddcl list end}}
Line 25: Line 25:
 
===Possible implementation===
 
===Possible implementation===
 
{{eq fun | 1=
 
{{eq fun | 1=
template<class ForwardIterator, class OutputIterator>
+
template<class ForwardIterator, class OutputIt>
OutputIterator rotate_copy(ForwardIterator first, ForwardIterator n_first,
+
OutputIt rotate_copy(ForwardIterator first, ForwardIterator n_first,
                           ForwardIterator last, OutputIterator d_first)
+
                           ForwardIterator last, OutputIt d_first)
 
{
 
{
 
     d_first = std::copy(n_first, last, d_first);
 
     d_first = std::copy(n_first, last, d_first);

Revision as of 02:55, 3 August 2012

 
 
Algorithm library
Constrained algorithms and algorithms on ranges (C++20)
Constrained algorithms, e.g. ranges::copy, ranges::sort, ...
Execution policies (C++17)
Non-modifying sequence operations
Batch operations
(C++17)
Search operations
(C++11)                (C++11)(C++11)

Modifying sequence operations
Copy operations
(C++11)
(C++11)
Swap operations
Transformation operations
Generation operations
Removing operations
Order-changing operations
(until C++17)(C++11)
(C++20)(C++20)
Sampling operations
(C++17)

Sorting and related operations
Partitioning operations
Sorting operations
Binary search operations
(on partitioned ranges)
Set operations (on sorted ranges)
Merge operations (on sorted ranges)
Heap operations
Minimum/maximum operations
(C++11)
(C++17)
Lexicographical comparison operations
Permutation operations
C library
Numeric operations
Operations on uninitialized memory
 

Template:ddcl list begin <tr class="t-dsc-header">

<td>
Defined in header <algorithm>
</td>

<td></td> <td></td> </tr> <tr class="t-dcl ">

<td class="t-dcl-nopad">
template< class ForwardIterator, class OutputIt >

OutputIt rotate_copy( ForwardIterator first, ForwardIterator n_first,

                            ForwardIterator last, OutputIt d_first );
</td>

<td class="t-dcl-nopad"> </td> <td class="t-dcl-nopad"> </td> </tr> Template:ddcl list end

Copies the elements from the range [first, last), to another range beginning at d_first in such a way, that the element n_first becomes the first element of the new range and n_first - 1 becomes the last element.

Contents

Parameters

first, last - the range of elements to copy
n_first - the element to move to the beginning of the new range
d_first - beginning of the destination range

Return value

output iterator to the element past the last element copied.

Possible implementation

template<class ForwardIterator, class OutputIt>
OutputIt rotate_copy(ForwardIterator first, ForwardIterator n_first,
                           ForwardIterator last, OutputIt d_first)
{
    d_first = std::copy(n_first, last, d_first);
    return std::copy(first, n_first, d_first);
}

Example

Complexity

linear in the distance between first and last

See also

Template:cpp/algorithm/dcl list rotate