SGI

rotate

类别:算法 组件类型:函数

原型

template <class ForwardIterator>
inline ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
                   ForwardIterator last);

描述

旋转在范围内旋转元素。也就是说,由middle指向的元素被移动到位置first,由middle + 1指向的元素被移动到位置指向的元素被移动到first + 1,依此类推。一种考虑此操作的方式是,它交换两个范围[first, middle)[middle, last)。形式上,对于每个整数n,条件满足0 <= n < last - first,元素*(first + n)分配给. 旋转*(first + (n + (last - middle)) % (last - first))返回.

first + (last - middle)

定义

在标准头文件 algorithm 和非标准向后兼容头文件 algo.h 中定义。

是可修改的。

是有效的范围。 [1]

复杂性线性的。最多last - first

交换执行。 [2]

char alpha[] = "abcdefghijklmnopqrstuvwxyz";
rotate(alpha, alpha + 13, alpha + 26);
printf("%s\n", alpha);
// The output is nopqrstuvwxyzabcdefghijklm

示例

备注[1] 由这两个要求得出先决条件

[2] 旋转[first, last)

使用的算法根据其参数是 向前迭代器双向迭代器 还是 随机存取迭代器 而有所不同。但是,所有这三个算法都是线性的。

另请参阅
[Silicon Surf] [STL Home]
rotate_copy 版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。