| 类别:算法 | 组件类型:函数 |
template <class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward(BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result);
返回值为result - (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具有相反的限制。如果这两个范围完全不重叠,当然,则可以使用任一算法。