`
huobengluantiao8
  • 浏览: 1029288 次
文章分类
社区版块
存档分类
最新评论

简单的程序诠释C++ STL算法系列之十三:copy

 
阅读更多

前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法。所谓变易算法(Mutatingalgorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。

我们现在来看看第一个变易算法:元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复制目标result给定的区间[result,result+(last-first))中。下面我们来看看它的函数原型:

函数原形:

参数

_First,_Last
指出被复制的元素的区间范围[ _First,_Last).
_DestBeg
指出复制到的目标区间起始位置

返回值

返回一个迭代器,指出已被复制元素区间的最后一个位置

程序示例:

首先我们来一个简单的示例,定义一个简单的整形数组myints,将其所有元素复制到容器myvector中,并将数组向左移动一位。


从上例中我们看出copy算法可以很简单地将一个容器里面的元素复制至另一个目标容器中,上例中代码特别要注意一点就是myvector.resize(7);这行代码,在这里一定要先为vector分配空间,否则程序会崩,这是初学者经常犯的一个错误。其实copy函数最大的威力是结合标准输入输出迭代器的时候,我们通过下面这个示例就可以看出它的威力了。

呵呵,现在知道copy的神奇所在吧,^_^

*******************************************************************************************************************************

C++经典书目索引及资源下载:http://blog.csdn.net/jerryjbiao/article/details/7358796

********************************************************************************************************************************

分享到:
评论

相关推荐

    C++ STL开发技术导引(第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 范围查找...

    C++ STL 开发技术导引(第6章)

    第四篇 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讲解 PPT版本

    STL(Standard TemplateLibrary),即标准模板库,从根本上说,STL是一些“容器”的集合,这些...算法(Algorithms):各种常用算法,如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种Function Templat

    C++ STL开发技术导引(第3章)

    第四篇 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 范围查找...

    effective stl stl 技巧

    条款6:警惕C++最令人恼怒的解析 条款7:当使用new得指针的容器时,记得在销毁容器前delete那些指针 条款8:永不建立auto_ptr的容器 条款9:在删除选项中仔细选择 条款10:注意分配器的协定和约束 条款11:...

    c++ STL容器总结之:vertor与list的应用

    STL算法是一种 function template。 3、迭代器(iterators):扮演容器与算法之间的胶合剂,是所谓的“泛型指针”。所有STL容器都有自己的专属的迭代器。 4、仿函数(functors):行为类似函数,可以作为算法的某些...

    Effictive STL CHM中文版

    》灰《《常好的STL教程Effective STL 目录 容器 条款1: 仔细选择你要的容器 条款2: 小心对“容器无关代码”的幻想 条款3: 使容器里对象的拷贝操作轻量而正确 条款4: 用empty来代替检查size是否为0 条款5: ...

    stl常用算法(Algorithms)介绍(stl排序算法、非变序型队列)

    算法由模板函数体现,这些函数不是容器类的成员函数,是独立的函数,它们可以用于STL容器,也可以用于普通的C++数组等. 头文件:#include 在STL的泛型算法中有4类基本的算法: 1)变序型队列算法: 可以改变容器内的数据...

    Effective STL(中文)

    提防在指针的容器上使用类似remove的算法 条款34:注意哪个算法需要有序区间 条款35:通过mismatch或lexicographical比较实现简单的忽略大小写字符串比较 条款36:了解copy_if的正确实现 条款37:用...

    STL 源码剖析(侯捷先生译著)

    3.4.3 迭代器相应型别之三pointer_type 091 3.4.4 迭代器相应型别之四reference_type 091 3.4.5 迭代器相应型别之五iterator_category 092 以advanced() 为例 093 消除 "单纯传递调用函数" 097 以distance() 为...

    STL源码剖析.pdg

    3.4.3 迭代器相应型别之三pointer_type 091 3.4.4 迭代器相应型别之四reference_type 091 3.4.5 迭代器相应型别之五iterator_category 092 以advanced() 为例 093 消除 "单纯传递调用函数" 097 以distance() 为...

    effective stl 中文 pdf

    effective stl pdf 怎么使用stl 这里几乎都有说明 条款1: 仔细选择你要的容器 条款2: 小心对“容器无关代码”的幻想 条款3: 使容器里对象的拷贝操作轻量而正确 条款4: 用empty来代替检查size是否为0 条款5: ...

    STL模板,常用容器.docx

    1,STL的六大组件:容器container,算法algorithm,迭代器iterator,仿函数,适配器(配接器),空间配置器,,容器和算法是通过迭代器进行无缝连接起来的,STL几乎所有代码都采用了模板类或模板函数。 (1).容器:...

    C++ 实现的简单的希尔排序的算法

    C++ 实现的一个简单的希尔排序的示例代码,写的比较简单,VC环境下运行通过了,给大家学习使用吧,直接copy进去运行就行了

    C++大学教程,一本适合初学者的入门教材(part1)

    第1章 计算机与C++编程简介 1.1 简介 1.2 什么是计算机 1.3 计算机组成 1.4 操作系统的变革 I.5 个人计算、分布式计算与客户/a匠务器计算 l. 6 机器语言、汇编语言和高级语言 1.7 C语言与C++的历史 1.8 C++...

    C++大学教程,一本适合初学者的入门教材(part2)

    第1章 计算机与C++编程简介 1.1 简介 1.2 什么是计算机 1.3 计算机组成 1.4 操作系统的变革 I.5 个人计算、分布式计算与客户/a匠务器计算 l. 6 机器语言、汇编语言和高级语言 1.7 C语言与C++的历史 1.8 C++...

    STL:本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常用的find、sort、copy、replace、count、accumulate......等泛型算法的使用范例。为面试笔试编程题提供便利

    STL本例程提供了C++的STL常用数据结构及其算法的使用范例,为面试笔试编程题提供便利

    -C++参考大全(第四版) (2010 年度畅销榜

    第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 ...

    LightSTL:STL的子集和超集

    LightSTLLightSTL是STL的一个子集和一个超集,是我在分析STL源码后结合自己的理解进行编写的主要目的在于提高数据结构与算法和C++编程LightSTL开发进度底层配置和主要容器iterator_traits(100%)type_traits(100%)...

Global site tag (gtag.js) - Google Analytics