旋转到容器的末尾

时间:2014-03-16 15:50:18

标签: c++ stl

我想进行类似于std::rotate的旋转,但是middle迭代器将成为新的最后一个元素而不是新的第一个元素

1 个答案:

答案 0 :(得分:2)

然后你只需要middle迭代器后面的元素成为新的开始。旋转为middle。例如

template <class ForwardIterator>
void rotate_last(ForwardIterator first, ForwardIterator middle, ForwardIterator last)
{
    ForwardIterator itn(middle);
    if (middle != last)
    {
       std::advance(itn, 1);
    }
    if (itn != last)
    {
       std::rotate(first, itn, last);
    }
}