📜  C++ STL-algorithm.rotate_copy()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.363000             🧑  作者: Mango

C++ STL-algorithm.rotate_copy()函数

在C++标准库的STL中, algorithm.rotate_copy()函数是用于将一个序列的一部分旋转并复制到另一个序列中的函数。它是一个通用的函数,可以用于操作大多数STL容器的迭代器,例如向量、数组和普通数组。

语法

函数使用的原型如下:

OutputIterator rotate_copy( InputIterator first, InputIterator middle, InputIterator last,
                              OutputIterator result );

参数:

  • first, middle, last: 表示原始序列的边界。将 [first, middle) 旋转到 [middle, last) 实现的效果是将原始序列在中间分成两部分,并将其逆序。请注意,last 是开放区间,因此要将迭代器递增至序列的末尾。
  • result: 输出序列的起始位置。

返回类型为输出序列的末尾迭代器。

示例

以下是rotate_copy()函数的示例:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(){
    vector<int> v{ 1, 2, 3, 4, 5 };
    vector<int> v2( v.size() );
    auto it = rotate_copy( v.begin(), v.begin() + 2, v.end(), v2.begin() );
    for( auto& i : v2 ) cout << i << ' ';
    cout << '\n';
    return 0;
}

输出结果为:

3 4 5 1 2

此示例将v中[first, middle)的区间旋转到[middle, last),并将结果存储在v2中。请注意,v2是一个与v相同的大小的向量。

总结
  • rotate_copy()是一个将一部分序列旋转并复制到另一个序列的STL算法。
  • 它对于从STL容器到普通数组等几乎所有类型的迭代器都是通用的。
  • 使用rotate_copy()可以将算法操作的结果复制到另一个容器中,而不会改变原始数据。