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