rotate_copy
|
|
类别:算法 |
组件类型:函数 |
原型
template <class ForwardIterator, class OutputIterator>
OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,
ForwardIterator last, OutputIterator result);
说明
Rotate_copy从该范围[first, last)复制元素到该范围[result, result + (last - first))使得*中间被复制到*结果, *(中间 + 1)被复制到*(结果 + 1)依次类推。正式地说,针对每个整数n使得0 <= n < last - first, rotate_copy执行赋值*(result + (n + (last - middle)) % (last - first)) = *(first + n). Rotate_copy类似于复制后跟旋转,但效率更高。返回值为结果 + (最后 - 起始).
定义
在标准头文件 算法 中定义,以及非标准后退兼容头文件 algo.h 中定义。类型要求
-
ForwardIterator是 前置迭代器 的模型。
-
OutputIterator是 输出迭代器 的模型。
-
ForwardIterator'的值类型可转换为OutputIterator'的值类型集合中的类型。
前提条件
-
[first, middle)是一个有效范围。
-
[middle, last)是一个有效范围。 [1]
- 具有足够的空间来容纳被复制的所有元素。更正式地说,要求是[result, result + (last - first))是一个有效范围。
- 范围[first, last)和[result, result + (last - first))不重叠。
复杂性
线性。Rotate_copy确切执行最后 - 起始赋值。示例
const char alpha[] = "abcdefghijklmnopqrstuvwxyz";
rotate_copy(alpha, alpha + 13, alpha + 26, ostream_iterator<char>(cout));
// The output is nopqrstuvwxyzabcdefghijklm
备注
[1] 满足这两个要求,因此[first, last)是一个有效范围。
另请参见
旋转, 复制.
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。
商标信息