copy函数

原创 2015年11月20日 10:24:28

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

     template<class InputIterator, class OutputIterator>  
        OutputIterator copy(  
           InputIterator _First,   
           InputIterator _Last,   
           OutputIterator _DestBeg  
       );

参数

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

返回值

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

下面来看个例子:

#include <iostream>  
#include <algorithm>  
#include <vector>  

using namespace std;

int main()
{
	int myints[] = { 10, 20, 30, 40, 50, 60, 70 };
	vector<int> myvector;
	vector<int>::iterator it;

	myvector.resize(7);   // 为容器myvector分配空间  

	//copy用法一:  
	//将数组myints中的七个元素复制到myvector容器中  
	copy(myints, myints + 7, myvector.begin());

	cout << "myvector contains: ";
	for (it = myvector.begin(); it != myvector.end(); ++it)
	{
		cout << " " << *it;
	}
	cout << endl;

	//copy用法二:  
	//将数组myints中的元素向左移动一位  
	copy(myints + 1, myints + 7, myints);

	cout << "myints contains: ";
	for (size_t i = 0; i < 7; ++i)
	{
		cout << " " << myints[i];
	}
	cout << endl;

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

using namespace std;

int main()
{
	typedef vector<int> IntVector;
	typedef istream_iterator<int> IstreamItr;
	typedef ostream_iterator<int> OstreamItr;
	typedef back_insert_iterator< IntVector > BackInsItr;

	IntVector myvector;

	// 从标准输入设备读入整数  
	// 直到输入的是非整型数据为止 请输入整数序列,按任意非数字键并回车结束输入  
	cout << "Please input element:" << endl;
	copy(IstreamItr(cin), IstreamItr(), BackInsItr(myvector));

	//输出容器里的所有元素,元素之间用空格隔开  
	cout << "Output : " << endl;
	copy(myvector.begin(), myvector.end(), OstreamItr(cout, " "));
	cout << endl;

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

c中几个copy函数的使用细节

strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而...
  • numbibi
  • numbibi
  • 2012年09月25日 10:56
  • 7029

c++ copy库函数的用法

#include #include #include #include using namespace std; int main() {     int dim[]={1,2,3,...
  • qq_36125733
  • qq_36125733
  • 2017年03月27日 20:24
  • 415

STL copy()函数用法

闲言少叙,上代码: #include #include #include using namespace std; int main () { int src[]= {1, 2, 3...
  • ozwarld
  • ozwarld
  • 2012年12月03日 14:53
  • 10221

Linux_c编程——copy函数

c语言——copy函数
  • King_Du
  • King_Du
  • 2014年07月16日 19:05
  • 1605

使用copy函数输出vector中的内容

学习了一种快速输出vector到输出流的方法(当然这个输出流不仅仅是标准输出cout,还可以是其他的文件流)。 首先要包含两个头文件,(这个头文件中有copy函数)以及(这个里面有ostream_i...
  • cjbct
  • cjbct
  • 2017年01月08日 20:28
  • 1046

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

前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法。所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据...
  • jerryjbiao
  • jerryjbiao
  • 2012年03月20日 23:43
  • 19792

C++ - 使用copy函数打印容器(container)元素

使用copy函数打印容器(container)元素本文地址: http://blog.csdn.net/caroline_wendyC++可以使用copy函数输出容器(container)中的元素, ...
  • u012515223
  • u012515223
  • 2014年06月17日 08:44
  • 3536

【STL】copy, copy_if, copy_backward函数解析

void test_copy() { int src[5] = {3, 6, 9, 12, 15}; int dect[10] = {10, 20, 30, 40, 50, 60, 70, 80,...
  • huang_xw
  • huang_xw
  • 2012年11月26日 10:22
  • 3888

houdini中copy节点的stamp函数的用法

在场景中撒了一些点,然后做了一个球,用copy节点将球拷贝到各个点上。然后赋给这些球一个随机的颜色。实质上就是用copy节点的stamp函数的方法。 具体过程的截图:...
  • lugui2009
  • lugui2009
  • 2017年02月28日 16:32
  • 1530

delphi中的copy函数和pos函数

1、copy(‘csdn’,1,2)   返回的结果是 cs   注释: Copy有3个参数,第一个是要处理的字符串,第二个是要截取的开始位置,第三个是截取位数 当第三个参数大于字...
  • zisongjia
  • zisongjia
  • 2016年12月02日 00:36
  • 1310
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:copy函数
举报原因:
原因补充:

(最多只允许输入30个字)