前文中展示了copy的魅力,现在我们来看一下它的孪生兄弟copy_backward,copy_backward算法与copy在行为方面相似,只不过它的复制过程与copy背道而驰,其复制过程是从最后的元素开始复制,直到首元素复制出来。也就是说,复制操作是从last-1开始,直到first结束。这些元素也被从后向前复制到目标容器中,从result-1开始,一直复制last-first个元素。举个简单的例子:已知vector {0, 1, 2, 3, 4, 5},现我们需要把最后三个元素(3,
4, 5)复制到前面三个(0, 1, 2)位置中,那我们可以这样设置:将first设置值3的位置,将last设置为5的下一个位置,而result设置为3的位置,这样,就会先将值5复制到2的位置,然后4复制到1的位置,最后3复制到0的位置,得到我们所要的序列{3, 4, 5, 3, 4, 5}。下面我们来看一下copy_backward的函数原型:
函数原型:
参数:
first, last
指出被复制的元素的区间范围[first,last).
result
指出复制到目标区间的具体位置[result-(last-first),result)
返回值:
返回一个迭代器,指出已被复制元素区间的起始位置
程序示例:
先通过一个简单的示例来阐述copy_backward的使用方法,程序比较简单,代码中做了详细的说明,在此不再累赘。
通过上例的简单介绍相信大家对copy_backward 的基本使用不再陌生了吧,^_^,下面我们结合前面所讲的for_search算法来巩固一下copy_backward的使用。
*******************************************************************************************************************************
C++经典书目索引及资源下载:http://blog.csdn.net/jerryjbiao/article/details/7358796
********************************************************************************************************************************
分享到:
相关推荐
copy_backward copy_if copy_n count count_if equal equal_range fill fill_n find find_first_of find_if find_if_not for_each for_each_n generate includes iota is_heap is
第四篇 C++ STL算法技术 第21章 非变易算法 284 21.1 逐个容器元素for_each 284 21.2 查找容器元素find 285 21.3 条件查找容器元素find_if 286 21.4 邻近查找容器元素adjacent_find 287 21.5 范围查找...
第四篇 C++ STL算法技术 第21章 非变易算法 284 21.1 逐个容器元素for_each 284 21.2 查找容器元素find 285 21.3 条件查找容器元素find_if 286 21.4 邻近查找容器元素adjacent_find 287 21.5 范围查找...
3.4.4 迭代器相应型别之四reference_type 091 3.4.5 迭代器相应型别之五iterator_category 092 以advanced() 为例 093 消除 "单纯传递调用函数" 097 以distance() 为例 098 3.5 std::iterator class 的保证 099...
第四篇 C++ STL算法技术 第21章 非变易算法 284 21.1 逐个容器元素for_each 284 21.2 查找容器元素find 285 21.3 条件查找容器元素find_if 286 21.4 邻近查找容器元素adjacent_find 287 21.5 范围查找...
内容简介回到顶部↑这本书不适合C++ 初学者,不适合 Genericity(泛型技术)初学者,或 STL 初学者。这本书也不适合带领你学习面向对象(Object Oriented)技术 — 是的,STL 与面向对象没有太多关连。本书前言清楚...
第34章 STL算法 34.1 adjacent_find 34.2 binary_search 34.3 copy 34.4 copy_backward 34.5 count 34.6 count_if 34.7 equal 34.8 equal_range 34.9 flll和fill_n 34.10 find 34.11 find_end 34.12 find_first_of ...
LightSTLLightSTL是STL的一个子集和一个超集,是我在分析STL源码后结合自己的理解进行编写的主要目的在于提高数据结构与算法和C++编程LightSTL开发进度底层配置和主要容器iterator_traits(100%)type_traits(100%)...
20.5.8 copy—backward、 merge、 unique和reverse 20.5.9 inplace_merge、 unique—copy和reverse—copy 20.5.10 集合操作 20.5.11 1ower—bound、 upper—bound和equal_range 20.5.12 堆排序 20.5.13 ...
20.5.8 copy—backward、 merge、 unique和reverse 20.5.9 inplace_merge、 unique—copy和reverse—copy 20.5.10 集合操作 20.5.11 1ower—bound、 upper—bound和equal_range 20.5.12 堆排序 20.5.13 ...