当前位置: 首页>>代码示例>>用法及示例精选>>正文


C++ std::rotate_copy()用法及代码示例

C++ STL std::rotate_copy() 函数

rotate_copy() 函数是算法头的库函数,用于在给定范围内将一个序列的元素向左旋转,并将旋转的元素复制到另一个序列中,它接受输入序列的范围(开始,结束),中间点,以及一个指向结果序列起始元素的迭代器。它以中间迭代器指向的元素成为新的第一个元素的方式旋转元素。

注意:使用 rotate_copy() 函数 - 包括<algorithm>标题或者您可以简单使用<bits/stdc++.h>头文件。

std::rotate_copy() 函数的语法

    std::rotate_copy(
        iterator start,  
        iterator middle, 
        iterator end, 
        iterator start_result);

参数:

  • iterator start- 指向序列第一个元素的迭代器。
  • iterator middle- 一个迭代器,指向我们想要开始旋转的中间或任何其他元素。
  • iterator end- 指向序列最后一个元素的迭代器。
  • iterator start_result- 指向结果序列中第一个元素的迭代器。

返回值: void- 它返回注意。

例:

    Input:
    //an array (source)
    int arr[] = { 10, 20, 30, 40, 50 };
    //vector
    vector<int> v(5);
    
    //rotating and copy array elements to the vector
    rotate_copy(arr + 0, arr + 2, arr + 5, v.begin());
        
    Output:
    vector elements:30 40 50 10 20

用于演示 std::rotate_copy() 函数使用的 C++ STL 程序

在这个程序中,我们有一个数组和一个向量;我们从第二个索引旋转它的元素并复制到向量中。

//C++ STL program to demonstrate use of
//std::rotate_copy() function
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

//main code
int main()
{
    //an array (source)
    int arr[] = { 10, 20, 30, 40, 50 };

    //vector
    vector<int> v(5);

    //printing array and vector elements
    cout << "array elements..." << endl;
    for (int x:arr)
        cout << x << " ";
    cout << endl;

    cout << "vector elements begfore rotating..." << endl;
    for (int x:v)
        cout << x << " ";
    cout << endl;

    //rotating and copy array elements to the vector
    rotate_copy(arr + 0, arr + 2, arr + 5, v.begin());

    cout << "vector elements after rotating..." << endl;
    for (int x:v)
        cout << x << " ";
    cout << endl;

    return 0;
}

输出

array elements...
10 20 30 40 50
vector elements begfore rotating...
0 0 0 0 0
vector elements after rotating...
30 40 50 10 20

参考:C++ std::rotate_copy()



相关用法

注:本文由纯净天空筛选整理自 std::rotate_copy() function with example in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。