先看函数原型
从first到last这段区间内的数据都要复制到x处template<class InIt, class OutIt> OutIt copy(InIt first, InIt last, OutIt x);
看一下具体代码
int main() { int src[]= {1, 2, 3, 4, 5, 6, 7}; vector<int> srcVec(src+2,src+6); for(int i=0;i<srcVec.size();i++) { cout<<srcVec[i]<<" "<<endl; } cout<<endl; // 将数组src起始位置到+7后的位置的这段数据赋值给srcVec // srcVec从开始的地方开始接收 copy(src,src+3,srcVec.begin()); for(int i=0;i<srcVec.size();i++) { cout<<srcVec[i]<<" "<<endl; } cout<<endl; return 1; }
有人会说,采用for循环一样可以做到,但是两者在效率上是有差异的,这里给出一篇博客链接,详细的介绍了使用for循环和copy的效率差异
C++ STL copy函数效率分析 在这里感谢这位博主的热心分享