std::shift_right
                Актуально для C++23.
                #include <algorithm>
                Актуально на 2024-03-13.
                Define overload #1
template<class ForwardIterator>
constexpr ForwardIterator
shift_right(ForwardIterator first, ForwardIterator last,
            typename iterator_traits<ForwardIterator>::difference_type n);
Перемещает вправо элементы в диапазоне [first, last].
Если n <= 0 или n >= last - first не делает ни чего, но в реализации STL входящей в состав GCC, n не должно быть меньше нуля.
Вернёт first + n если n больше нуля и n < last - first, иначе last если n больше нуля, иначе first.
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class ForwardIterator>
ForwardIterator
shift_right(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
            typename iterator_traits<ForwardIterator>::difference_type n);
TODO
Example, possible implementation
Examples
Example 1:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
    std::vector<std::string> vec = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
    std::shift_right(std::begin(vec), std::end(vec), 3);
    for (std::size_t i = 0; i < vec.size(); ++i)
    {
        std::cout << "vec[" << i << "]: " << vec[i] << std::endl;
    }
    return 0;
}
vec[0]: vec[1]: vec[2]: vec[3]: 1 vec[4]: 2 vec[5]: 3 vec[6]: 4 vec[7]: 5 vec[8]: 6
Changelog
See also
TODO
 This page was last modified on 2024-03-13