@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
std::rotate
Актуально для C++23.

#include <algorithm>
Актуально на 2024-03-11.



Define overload #1
template<class ForwardIterator>
constexpr ForwardIterator
rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last);

Выполняет левый поворот диапазона [first, last] так что, элементы на которые указывает middle, перемещаются в начало диапазона.
Перемещение реализовано с помощью алгоритма std::iter_swap.
Вернёт first + (last - middle).
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class ForwardIterator>
ForwardIterator
rotate(ExecutionPolicy&& exec, ForwardIterator first,
       ForwardIterator middle, ForwardIterator last);

TODO
Example, possible implementation


Examples


Example 1:
#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> set1 = {1, 2, 3, 4, 6};
    std::rotate(std::begin(set1), std::begin(set1)+3, std::end(set1));
    for (auto x : set1) {
        std::cout << x << std::endl;
    }
    return 0;
}

4
6
1
2
3



Changelog

C++26
TODO
C++23
TODO
C++20
TODO
C++17
TODO
C++14
TODO
C++11
TODO


See also

TODO

This page was last modified on 2024-03-11