@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
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

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-13