对于std::copy的用法,可以参考 https://blog.csdn.net/a_ran/article/details/17385911,我这里直接介绍对于std::vector来说std::copyassign的用法。


std::vectorstd::string有个assign()成员函数,用于拷贝、赋值操作,它们允许我们顺次地把一个std::vectorstd::string 对象的部分内容拷贝到另一个std::vectorstd::string 对象上。

当需要把一个vector对象的元素添加到另一个vector对象中时,可以有两种方法:

std::vector<int> vct1 = {1,2,3,4,5,6};
std::vector<int> vct2;
// 方法1:使用assign
vct2.assign(vct1.begin(), vct1.end());
// 方法1:使用std::copy
std::copy(vct1.begin(), vct1.end(),std::back_inserter(vct2));
std::cout  << "A处: ";
for (auto v : vct2) {std::cout << v << ", ";
}vct2.assign(vct1.begin(), vct1.end());std::cout  << "B处: ";
for (auto v : vct2) {std::cout << v << ", ";
}


但是在多次添加时,使用std::copy就很方便了。如:把vct1vct2都添加进vct3中:

std::vector<int> vct1 = {1,2,3,4,5,6};
std::vector<int> vct2 = {7,8,9};
std::vector<int> vct3;
std::copy(vct1.begin(), vct1.end(), std::back_inserter(vct3));
std::copy(vct2.begin(), vct2.end(), std::back_inserter(vct3));
for (auto v : vct3) {std::cout << v << ", ";
}

输出结果:

如果想使用assign就做不了,而只能使用一次assign把vct1添加进vct3中,后面的vct2就必须使用for遍历vct2的每个元素,然后一个一个push_backvct3中。使用std::copy就很方便了,调用两次std::copy即可完成这个功能。

【C++】41. std::copy和assign的用法相关推荐

  1. JavaScript 中 Object.assign() 的用法

    目录 1. Object.assign()对象的拷贝 2. Object.assign()对象的深拷贝 3. 对象的合并 4. 合并具有相同属性的对象 5. 继承属性和不可枚举属性是不能拷贝 6. 原 ...

  2. std::copy性能分析与memmove机器级实现

    复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. ...

  3. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

  4. retain和copy还有assign的区别

    retain和copy还有assign的区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a和b ...

  5. std::ostream_iterator、std::cout、std:copy实现输出

    如下: std::vector<int> myvector(10);/* std::iota算法功能是从0每次自增1直至将myvector中的10个元素填满故现在myvector中的元素为 ...

  6. std::copy与memcpy比较

    目录 比较 例子 不适用std::copy却适用memcpy的场景 适用std::copy不适用memcpy的场景 比较 std::copy和memcpy都可以用于内存块之间的复制操作,但有几个重要的 ...

  7. ES6 Object.assign()的用法

    1.Object.assign()基本用法: Object.assign方法用来将源对象(source)的所有可枚举属性,复制到目标对象(target).它至少需要两个对象作为参数,第一个参数是目标对 ...

  8. std::enable_if 的几种用法

    https://yixinglu.gitlab.io/enable_if.html std::enable_if 的几种用法 tech 12cpp 2 std::enable_if 顾名思义,满足条件 ...

  9. copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理

    copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString 对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协 ...

最新文章

  1. OceanBase迁移服务:向分布式架构升级的直接路径
  2. java后期发展方向_2020年前3季度工程自卸车市场咋样?后期朝啥方向发展?
  3. 如何让springboot中的某些html文件不经过thymeleaf模板解析?
  4. 会议交流 | 第十五届全国知识图谱与语义计算大会(CCKS 2021)12月25日线上召开...
  5. (97)Verilog HDL:秒灯设计
  6. 运维实战案例之“Too many open files”错误与解决方法
  7. SDUT 2482 二叉排序树
  8. 用python开发文本翻译小软件
  9. ulead gif animator 5.11中文破解版|ulead gif animator绿色中文破解版下载 v5.11
  10. matlab倒立摆不同初始条件,倒立摆MATLAB建模
  11. HTML作业制作服装推广软文,盘点:服装推广软文写作技巧
  12. java digester_使用digester解析XML配置文件
  13. win11安装更新错误0x800f081f怎么解决?
  14. 自定义 UINavigationController
  15. 从千牛产品策略看电商客服接待场景
  16. mongoDB使用及简单命令(忘记了密码怎么办、mongoDB密码重置、创建数据库、mongoDB启动停止)
  17. 常见的机器学习数据挖掘知识点
  18. 安卓-橡皮擦擦线完整实现
  19. 上海航芯| BMS专题之BMS基础功能模块概述分享
  20. R和pandas实现透视表(pivot; cast/dcast/acast)和逆透视表(melt)过程

热门文章

  1. 开源项目成熟度分析工具-利用github api获取代码库的信息
  2. 主流的自动化运维工具
  3. 分组密码的工作模式--wiki
  4. Mysql数据库存储引擎--转
  5. 8 Great Java 8 Features No One's Talking about--转载
  6. Http Message Converters with the Spring Framework--转载
  7. Java Annotations: Explored Explained--转载
  8. 搭建属于自己的wiki
  9. 深入redis内部---网络编程
  10. Lesson 5.分类模型决策边界与模型评估指标