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
TODOC++23
TODOC++20
TODOC++17
TODOC++14
TODOC++11
TODOSee also
TODO
This page was last modified on 2024-03-13