STL 中的 rotate() 函数是循环移位函数,该算法用于交换集合中的元素的位置。
#include <algorithm>
template <class ForwardIterator>
ForwardIterator rotate (ForwardIterator first, ForwardIterator middle,
ForwardIterator last);
参数 | 描述 |
---|---|
first | 输入迭代器 |
middle | 输入迭代器 |
last | 输入迭代器 |
效果是交换 [middle,last) 和 [first,middle) 部分的位置。
使用 STL rotate 函数移动元素
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::cout << "嗨客网(www.haicoder.net)\n" << std::endl;
vector<int> vi{1,2,3,4,5,6};
vector<int> vresult{10,20,30,40,50};
cout << "vi = ";
for(int i:vi)
{
cout << i << " ";
}
cout<<endl;
cout << "vresult = ";
for(int i:vresult)
{
cout << i << " ";
}
cout<<endl;
rotate(vi.begin(), vi.begin()+3, vi.end());
rotate(vresult.begin(), vresult.end()-1, vresult.end());
cout << "after rotate(vi.begin(),vi.begin()+3,vi.end())" << endl;
cout << "vi = ";
for (int i:vi)
{
cout << i << " ";
}
cout << endl;
cout << "after rotate(vresult.begin(),vresult.end()-1,vresult.end());" << endl;
cout << "vresult = ";
for (int i:vresult)
{
cout << i << " ";
}
cout<<endl;
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ rotate.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 rotate 函数,实现了集合中元素的移动。
STL 中的 rotate() 函数是循环移位函数,该算法用于交换集合中的元素的位置。