copy, copy_if, copy_backward函数解析

  1. void test_copy()  
  2. {  
  3.     int src[5] = {3, 6, 9, 12, 15};  
  4.     int dect[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};  
  5.     std::vector<int> src_vect(src, src + 5);  
  6.     std::vector<int> dect_vect(dect, dect + 10);  
  7.   
  8.     std::copy(src_vect.cbegin(), src_vect.cend(), dect_vect.end());  
  9.     std::copy(dect_vect.cbegin(), dect_vect.cend(), std::ostream_iterator<int>(std::cout, " "));  
  10.     // result: 10 20 3 6 9 12 15 80 90 100  
  11. }  
  12.   
  13. // copy_backward与copy函数的不同之处在于:  
  14. // copy_backward函数它是从最后一个元素向前复制。  
  15. void test_copy_backward()  
  16. {  
  17.     int src[5] = {3, 6, 9, 12, 15};  
  18.     int dect[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};  
  19.     std::vector<int> src_vect(src, src + 5);  
  20.     std::vector<int> dect_vect(dect, dect + 10);  
  21.   
  22.     std::copy_backward(src_vect.cbegin(), src_vect.cend(), dect_vect.begin() + 5);  
  23.     std::copy(dect_vect.cbegin(), dect_vect.cend(), std::ostream_iterator<int>(std::cout, " "));  
  24.     // result: 10 20 30 40 50 3 6 9 12 15  
  25. }  
  26.   
  27. // copy_if相比与copy多了一个函数对象,控制更加灵活。  
  28. void test_copy_if()  
  29. {  
  30.     int ar[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};  
  31.     std::vector<int> vect(ar, ar + 10);  
  32.   
  33.     std::copy_if(vect.begin(),   
  34.                  vect.end(),   
  35.                  std::ostream_iterator<int>(std::cout, " "),   
  36.                  std::bind2nd(std::greater_equal<int>(), 50));  
  37.   
  38.     // result: 50 60 70 80 90 100  
  39. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值