当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ copy_n()用法及代码示例


C++ 算法 copy_n() 函数指定要复制到新容器中的元素数量。该函数用于从结果开始将容器 [first,last) 的 n 个元素复制到不同的容器中。

用法

template<class InputIterator, class Size, class OutputIterator>
OutputIterator copy_n(InputIterator first, Size n, OutputIterator result);

参数

first:它是范围​​的第一个元素的输入迭代器,其中元素本身包含在范围内。

last: 它是范围最后一个元素的输入迭代器,其中元素本身不包含在范围内。

result:它是复制元素的新容器的第一个元素的输出迭代器。

返回值

返回以结果开头的新范围的最后一个元素的迭代器。

例子1

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	vector<int> u1 = {2,6,8,4,9,4};
	vector<int> u2(6);
	vector<int> u3(6);
	copy(u1.begin(), u1.begin()+3, u2.begin());
	cout<<"The new vector with copy contains:";
	for(int k=0; k<u2.size(); k++)
	cout<<u2[k]<<" ";
	copy_n(u1.begin(),4,u3.begin());
	cout<<"\n";
	cout<<"The new vector using copy_n contains:";
	for(int m=0; m<u3.size(); m++)
	cout<<u3[m]<<" ";
}

输出:

The new vector with copy contains:2 6 8 0 0 0 
The new vector using copy_n contains:2 6 8 4 0 0

例子2

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	int newints[]={15,25,35,45,55,65,75};
	std::vector<int> newvector;
	newvector.resize(7);
	std::copy_n(newints,7,newvector.begin());
	std::cout<<"newvector contains:";
	for(std::vector<int>::iterator  ti= newvector.begin(); ti!=newvector.end();++ti)
	std::cout<<" "<<*ti;
	std::cout<<"\n";
	return 0;
}

输出:

newvector contains:15 25 35 45 55 65 75

复杂度

函数的复杂度从第一个元素到最后一个元素是线性的。

数据竞争

最多访问容器的 n 个元素。

异常

如果任何容器元素抛出一个异常,该函数就会抛出异常。






相关用法


注:本文由纯净天空筛选整理自 C++ Algorithm Functions copy_n()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。