C/C++知识点之STL算法:copy
小标 2018-08-10 来源 : 阅读 1573 评论 0

摘要:本文主要向大家介绍了C/C++知识点之STL算法:copy,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之STL算法:copy,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

std::copy 函数在  中声明,属于变易算法(Modifying sequence operations),主要用于实现序列数据的复制。
函数原型
声明
template 
    OutputIterator copy (
        InputIterator first, 
        InputIterator last, 
        OutputIterator result
    );
类型

InputIterator 输入迭代器
OutputIterator 输出迭代器

参数

first, last
被复制的元素在区间[first, last)。
result
目标序列的起始位置。
result 不应该在[first, last)内,此时最好用std::copy_backword代替

返回值
返回目标序列的结束位置。
参考实现
template
  OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result)
{
  while (first!=last) {
    *result = *first;
    ++result; ++first;
  }
  return result;
}
应用举例
#include 
#include 
#include 
#include 

int main()
{
    int arr[] = {1, 3, 5, 2, 4, 6};
    // 从 int * 复制到 ostream
    copy(arr, arr+6, ostream_iterator(cout, " "));
    cout << endl;
    vector v(7, 0);    //提前为vector分配空间
    // 从 int * 复制到 vector
    vector::iterator last = copy(arr, arr+6, v.begin());
    copy(v.begin(), last, ostream_iterator(cout, " "));
    cout << endl;

    set s{7, 8, 9};
    // 从 set 复制到 vector
    copy(s.begin(), s.end(), v.begin());
    copy(v.begin(), v.end(), ostream_iterator(cout, " "));
    cout << endl;

    return 0;
}
输出:
1 3 5 2 4 6
1 3 5 2 4 6
7 8 9 2 4 6 0
   

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved