📅  最后修改于: 2023-12-03 15:37:34.594000             🧑  作者: Mango
在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。
一般情况下,该函数适用于有限定容器长度的情况,如:
若使用该函数对于长度不受限制的容器进行操作,如:
则会影响容器的迭代器。因此,在该类型的容器中使用时需要特别考虑。
通过使用STL中的rotate函数,我们可以在容器中非常方便地实现旋转功能。同时需要注意的是,在使用时需要充分考虑容器类型和其长度,以免造成迭代器错误。