Функция rotate
Функция rotate из заголовочного файла algorithm выполняет
циклический сдвиг элементов в диапазоне. В первом параметре мы передаём
итератор начала диапазона, во втором - итератор элемента, который должен
стать первым после сдвига, а в третьем - итератор конца диапазона.
Элементы, находившиеся до указанного элемента, перемещаются в конец
диапазона, сохраняя относительный порядок.
Синтаксис
rotate(first, middle, last)
Пример
Давайте выполним циклический сдвиг вектора так, чтобы элемент
с индексом 2 стал первым:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
rotate(vec.begin(), vec.begin() + 2, vec.end());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
3 4 5 1 2
Пример
Давайте выполним циклический сдвиг вектора так, чтобы элемент
с индексом 3 стал первым:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
rotate(vec.begin(), vec.begin() + 3, vec.end());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
4 5 1 2 3
Пример
Давайте выполним циклический сдвиг строки так, чтобы символ
'c' стал первым:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str = "abcde";
rotate(str.begin(), str.begin() + 2, str.end());
cout << str << endl;
return 0;
}
Результат выполнения кода:
"cdeab"