c++STL模板之copy()算法。

在<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))

它总是让元素插入到第一个元素之前。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值