原文地址:http://www.cplusplus.com/reference/algorithm/copy_n/
template <class InputIterator, class Size, class OutputIterator>
OutputIterator copy_n (InputIterator first, Size n, OutputIterator result);
例子:
#include <iostream> #include <vector> #include <array> #include <algorithm> using namespace std; void copyn(){ vector<int> vi{1,2,3,4,5,6}; array<double,3> ai{7.7,8.8,9.9}; cout<<"at first:vi="; for(int &i:vi) cout<<i<<" "; cout<<endl; vi.resize(12); auto it=copy_n(ai.begin(),3,vi.end()-4); cout<<"after copy_n(ai.begin(),3,vi.end()-3) \nvi="; //for(double &i:vi) //error: invalid initialization of reference of type 'double&' from expression of type 'int'| for(int &i:vi) cout<<i<<" "; cout<<endl; cout<<"the return values is it="<<*it<<endl; }运行截图:
The function returns an iterator to the end of the destination range (which points to one past the last element copied).
该函数返回一个指向目标序列最后一个被复制元素的下一个元素的迭代器。
如果n是负数,函数不会做任何事情。
如果范围越界,即result后面不够存放时会导致未定义但状态依旧有效。
例子:
#include <iostream> #include <vector> #include <array> #include <algorithm> using namespace std; void copyn2(){ vector<int> vi{1,2,3,4,5,6}; array<double,3> ai{7.7,8.8,9.9}; cout<<"at first:vi="; for(int &i:vi) cout<<i<<" "; cout<<endl; vi.resize(12); auto it=copy_n(ai.begin(),3,vi.end()); cout<<"after copy_n(ai.begin(),3,vi.end()) \nvi="; //for(double &i:vi) //error: invalid initialization of reference of type 'double&' from expression of type 'int'| for(int &i:vi) cout<<i<<" "; cout<<endl; cout<<"the return values is it="<<*it<<endl; }运行截图: The behavior of this function template is equivalent to:
|
|
[first,last)
.该函数返回一个指向目标序列最后一个被覆盖元素的下一个元素的迭代器。
|
|
Edit & Run
|
myvector contains: 10 20 30 40 50 60 70 |
——————————————————————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:[email protected]
2014-9-11
于GDUT
——————————————————————————————————————————————————————————————————