Итератор на элемент, первоначально ссылаясь *сначала *, то есть std :: distance (middle, last)
th stear iterator first. Реализация: < /p>
Код: Выделить всё
template
constexpr // since C++20
ForwardIt rotate(ForwardIt first, ForwardIt middle, ForwardIt last)
{
if (first == middle)
return last;
if (middle == last)
return first;
ForwardIt write = first;
ForwardIt next_read = first; // read position for when “read” hits “last”
for (ForwardIt read = middle; read != last; ++write, ++read)
{
if (write == next_read)
next_read = read; // track where “first” went
std::iter_swap(write, read);
}
// rotate the remaining sequence into place
rotate(write, next_read, last);
return write;
}
< /code>
if (First == Middle) || (Средний == Последний) Подробнее здесь: https://stackoverflow.com/questions/790 ... d-this-way
Мобильная версия