SGI

copy_backward

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

原型

template <class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward(BidirectionalIterator1 first, 
                                     BidirectionalIterator1 last, 
                                     BidirectionalIterator2 result);

描述

Copy_backward将范围内的元素复制[first, last)到范围[result - (last - first), result) [1]。也就是说,它执行赋值操作*(result - 1) = *(last - 1), *(result - 2) = *(last - 2),依此类推。通常,对于每个整数n0last - first, copy_backward执行赋值操作*(result - n - 1) = *(last - n - 1)。赋值操作从输入序列的末尾到开头执行,按递增顺序执行n. [2]

返回值为result - (last - first)

定义

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

类型要求

前提条件

复杂度

线性。正好last - first个赋值操作被执行。

示例

vector<int> V(15);
iota(V.begin(), V.end(), 1);
copy_backward(V.begin(), V.begin() + 10, V.begin() + 15);

注释

[1] 结果是一个指向输出范围末尾的迭代器。这非常不寻常:在所有其他通过单个迭代器表示输出范围的 STL 算法中,该迭代器都指向范围的开头。

[2] 当输入和输出范围重叠时,赋值顺序很重要copy_backward如果result在范围内[first, last)。也就是说,如果输出范围的末尾与输入范围重叠,则不能使用它,但如果输出范围的开头与输入范围重叠,则可以使用它;copy具有相反的限制。如果这两个范围完全不重叠,当然,则可以使用任一算法。

另请参阅

copy, copy_n
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息