Циклический сдвиг в C++
Алгоритм rotate переносит элемент
на позиции middle в начало,
сохраняя относительный порядок частей.
Это сдвиг кольца без дополнительной памяти
уровня контейнера. Итератор middle
после вызова совпадает с прежним begin.
Запишем вектор букв и выведем строку:
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<char> ring = {'a', 'b', 'c', 'd'};
std::rotate(ring.begin(), ring.begin() + 2, ring.end());
for (char c : ring) {
std::cout << c;
}
std::cout << "\n";
return 0;
}
Циклически сдвиньте вектор {10, 20, 30, 40} так, чтобы 30 стало первым, алгоритмом rotate, и выведите все числа через пробел.