📜  在C++ STL中旋转(1)

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

在C++ STL中旋转

在C++ STL中,有一个常用的函数rotate,可以用于旋转容器中的元素。这个函数非常实用,尤其是对于数组或者向量这类标准容器。

函数介绍
template <class ForwardIterator>
void rotate (ForwardIterator first, ForwardIterator middle, ForwardIterator last);

该函数将[first,last)区间中的元素以middle处为界点进行旋转操作。其中,first是容器中第一个元素的迭代器,middle是分界点元素的迭代器,last是容器最后一个元素的下一个位置。

使用示例

下面给出一个简单的使用示例:

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

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

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

    for (auto i : vec) {
        std::cout << i << " ";
    }

    return 0;
}

上述代码的输出结果为:4 5 1 2 3。

使用环境

一般情况下,该函数适用于有限定容器长度的情况,如:

  • 数组
  • vector
  • deque

若使用该函数对于长度不受限制的容器进行操作,如:

  • list
  • forward_list

则会影响容器的迭代器。因此,在该类型的容器中使用时需要特别考虑。

总结

通过使用STL中的rotate函数,我们可以在容器中非常方便地实现旋转功能。同时需要注意的是,在使用时需要充分考虑容器类型和其长度,以免造成迭代器错误。