在<algorithm>这个头文件里面
看网上的题解时,忽然发现一个既熟悉又陌生的东西,copy()函数。
多多少少也算是接触了c++一段日子了,但没想到还有copy()函数,今天就来学习一下。
copy()故名思义就是复制拷贝的意思。
copy()一共接受三个参数,第一个参数是你要开始复制的对象(比如数组,容器,字符串)起始地址(指针,迭代器都行),第二个参数是复制的结束地址,这两个参数类似于sort()函数的前两个参数。第三个参数是复制到的目标区间的起始位置。
例子:
int num[]={1,2,3,4,5,6,7,8,9};
vector<int> v;
v.resize(9);//复制到目标区间时,目标区间一定要已经分配了空间!!
copy(num,num+9,v.begin());
当然假设不知道大小,或者不好分配时,还可以用stl中的插入迭代器
back_inserter()、inserter( ,)、front_inserter()
vector<int> v1;
copy(num,num+9,back_inserter(v1))
在没有未v1分配空间时,可以使用back_inserter(),它会使用push_back()插入!追加到末尾
vector<int> v1;
copy(num,num+9,inserter(v1,v1.begin())) //这里v1没有分配空间,所以begin()可能无法使用,只是希望大家了解使用方法
它会插入到inserter第二个参数也就是给定的迭代器所表示的元素的前边。
vector<int> v1;
copy(num,num+9,front_inserter(v1))
它总是让元素插入到第一个元素之前。