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

📅  最后修改于: 2023-12-03 14:59:45.545000             🧑  作者: Mango

C++ STL-algorithm.Rotate()函数介绍

概述

Rotate()函数是C++ STL(Standard Template Library)中的一个算法函数,用于在容器中旋转元素的位置。它的作用是将指定范围内的元素进行循环移动,使得其中一个元素成为新的起始元素。

函数签名

Rotate()函数的函数签名如下所示:

template<class ForwardIt>
ForwardIt rotate(ForwardIt first, ForwardIt n_first, ForwardIt last);
参数说明
  • first:要旋转的元素范围的起始位置的迭代器
  • n_first:指向需要成为新起始点的位置的迭代器
  • last:要旋转的元素范围的结束位置的迭代器
函数功能

Rotate()函数将从[first, last)范围内的元素顺序调整为以n_first为起始位置的新顺序,即将[first, n_first)范围内的元素移到[last - (n_first - first), last)范围内,而将剩余的元素[i, j)移到新的位置[first + (last - n_first), last)。

返回值

该函数返回一个迭代器,指向新的起始点,即n_first的位置。

示例代码

下面是一个使用Rotate()函数的示例代码:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    std::cout << "原始容器:" << std::endl;
    for (const auto& num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::rotate(vec.begin(), vec.begin()+3, vec.end());

    std::cout << "旋转后的容器:" << std::endl;
    for (const auto& num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

原始容器:
1 2 3 4 5 6 7 8 9
旋转后的容器:
4 5 6 7 8 9 1 2 3

以上示例代码中,我们先输出原始容器中的元素,然后使用Rotate()函数将容器中的元素进行旋转操作,以第4个元素为新起始点。最后输出旋转后容器中的元素,可以看到元素的顺序发生了改变。

注意事项
  • Rotate()函数会修改原始容器中元素的顺序。
  • 如果旋转范围内存在大量的元素,建议使用std::rotate_copy()函数创建一个新的副本进行旋转操作,以避免对原始数据进行修改。
  • Rotate()函数的时间复杂度是O(N),其中N是旋转范围内的元素数量。

更多关于C++ STL中的算法函数请参考官方文档。