copy算法
copy------强化效率无所不用其极
copy(first,last,result)算法可将输入区间[first,last)内的元素拷贝到输出区间[result,result+(last-first))内。也就是说,它会运行赋值操作*result
=*first,*(result+1) =*(first+1),
…一次类推。
返回一个迭代器:result+(last-first)。
注意:当result位于[first,last)之内时,也就是说,假设输出区间的起头与输入区间重叠,我们便不能使用copy。但假设输出区间的尾端与输入区间重叠。就能够使用copy。copy_backward的限制恰恰相反。假设两个区间全然不重叠,当然毫无疑问两个算法都能够用。
copy更改的是[result,result+(last-first))中的迭代器所指对象。而非更改迭代器本身。它会为输出区间内的元素赋予新值,而不是产生新元素。
它不能改变输出区间的迭代器个数。换句话说。copy不能直接用来将元素插入空容器中。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmF5ZXJ5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
Template <classBidirectionalIterator1,class BidirectionalIterator2>
BidirectionalIterator2copy_backward(BidirectionalIterator1 first,BidirectionalIterator1 last,
BidirectionalIterator2 result)
这个算法的考虑以及实现上的技巧与copy()十分类似,将[first,last)区间内每个元素,以逆行的方向拷贝到以result-1为起点,方向亦为逆行的区间上。
换句话说,copy_backward算法会运行赋值操作*(result-1)
= *(last-1),*(result-2)=*(last-2),…依次类推。
返回一个迭代器:
result-(last-first)。Copy_backward所接受的迭代器必须是BidirectionalIterators,才可以“倒行逆施”。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
copy算法的更多相关文章
- STL中copy算法
STL中通过使用copy函数以提供一种方便的方式来输出容器中的元素.函数copy作为泛型算法的一部分,任何容器类型都可以使用.由于我们需要频繁的初始容器的元素,因此在继续讨论容器之前,先学习一下cop ...
- copy GC 和 mark & compaction GC的算法异同
先标记 然后 copy GC是,对所有child,判断, 如果child没有被访问过,那么拷贝到新地址,child的forwording指向新地址,child标记为已访问,把自己对child的引用改为 ...
- C++ STL算法之:copy
C++ STL算法:copy 目录(?)[+] 前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法.所谓变易算法(Mutating a ...
- copy()之绝版应用
我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏幕).这是一种典型的处理方式,程序本身具备 ...
- STL区间成员函数及区间算法总结
STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...
- STL笔记(3) copy()之绝版应用
STL笔记(3) copy()之绝版应用 我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏 ...
- C++ STL算法系列6---copy函数
现在我们来看看变易算法.所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等. 我们现在来看看第一个变易算法:元素复制算法copy ...
- STL六大组件之——算法小小小小的解析
参考自侯捷的<stl源码剖析> stl算法主要分为非可变序列算法(指不直接修改其所操作的容器内容的算法),可变序列算法(指可以修改它们所操作的容器内容的算法),排序算法(包括对序列进行排序 ...
- std::copy的使用
看到有人在用std::copy这个东西,很简洁和爽啊,,所以找些帖子学习学习 http://blog.sina.com.cn/s/blog_8655aeca0100t6qe.html https:// ...
随机推荐
- JQuery学习(3)
创建精灵界面导航: 有以下图,合理的布局让图片正确显示: 先写导航栏html代码: <div id="navMenu"> <ul id="spriteN ...
- SQL 教程
SQL 教程 http://www.w3school.com.cn/sql/
- log4net结构
log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.其大致分为如下这些模块. Appenders模 ...
- 真机測试时的错误:No matching provisioning profiles found
1.出现错误的原因是这种---- 公司接收一个外包项目,原来做真机測试的时候,用的是公司申请的苹果开发人员账号.如今项目结束了,准备上线,但客户要求使用客户自己的苹果开发人员是账号上线,于是就用客户的 ...
- 消息机4_B
/******************************************************************** author : Clark/陈泽丹 created : 2 ...
- arm-linux-gcc下载与安装
在RHEL 5平台上安装配置arm-linux-gcc 2011-02-23 19:35:40| 分类: 嵌入式开发环境 | 标签: |字号大中小 订阅 . 在linux平台上安装好的基础上,开 ...
- 九度OnlineJudge之1014:排名
题目描述: 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线的考生,并将他 ...
- HDU ACM 1081 To The Max->最大子矩阵
分析:利用求最大子段和的思想进行求解. 1.首先累加s[i][j].表示第j列中i从第1行加到第i行的和. 2.对每一列的i1到i2行的和进行计算(0<i1<i2<=n),得出t[k ...
- 9、Cocos2dx 3.0游戏开发三查找值小工厂方法模式和对象
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27704153 工厂方法模式 工厂方法是程序设计中一个 ...
- java输出空心菱形
package com.zsh; import java.util.Scanner; public class Test08 { public static void main(String[] ar ...