关闭

copy函数

125人阅读 评论(0) 收藏 举报

元素复制算法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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:46080次
    • 积分:2540
    • 等级:
    • 排名:第15038名
    • 原创:215篇
    • 转载:20篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论