当前位置: 首页 > news >正文

Effective_STL 学习笔记(三十六) 了解 copy_if 的正确 实现

 

STL 提供了 11 个名字带有 “copy” 的算法

    copy        copy_backward

    replace_copy     reverse_copy

    replace_copy_if      unique_copy

    remove_copy    rotate_copy

    remove_copy_if   partial_sort_copy

    unintialized_copy

没有一个是 copy_if 的算法。。。

想要实现把一个 vector 中所有的有缺陷的 Widget 写到 cerr(如果存在 copy_if):

1   bool isDefective( const Widget & w );  // 判断 Widget 是否有缺陷
2   vector<Widget> widgets;
3   . . . 
4   copy_if( widgets.begin(), widgets.end(), ostream_iterator<Widget>(cerr, "\n"), isDefective );
5           // 不能编译,因为 STL 中没有 copy_if 算法

 

copy_if 正确的微不足道的实现:

 1   template< typename InputIterator, typename OutputIterator, typename Predicate >
 2   OutputIterator copy_if( InputIterator begin, InputIterator end, 
 3                   OutputIterator destBegin, Predicate p )
 4   {
 5     while( begin != end )
 6     {
 7       if( p(*begin) )
 8         *destBegin++ = *begin;
 9       ++begin;
10     }  
11     return destBegin;
12   }

copy_if 非常重要

 

转载于:https://www.cnblogs.com/kidycharon/p/10042592.html

相关文章:

  • 强健x86平台
  • Dubbo各种协议详解
  • Java,console输出实时的转向GUI textbox
  • SpringBoot 日志框架
  • Expression.Bind()方法的应用
  • python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法...
  • Extjs 4 grid中的checkbox的加载时预选中【默认选中】
  • java: -source 1.6 中不支持 switch 中存在字符串.....
  • Python中大名鼎鼎的face_recognition使用
  • Spark 触发Job提交
  • 【bzoj1013】[JSOI2008]球形空间产生器sphere
  • 与众不同 windows phone (44) - 8.0 位置和地图
  • 小程序开发之获取小程序二维码
  • Android Contextual Menus之二:contextual action mode
  • 基本类型和引用类型的值 动态的属性
  • 分享的文章《人生如棋》
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 2017 年终总结 —— 在路上
  • 2019.2.20 c++ 知识梳理
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Apache的基本使用
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Linux链接文件
  • ng6--错误信息小结(持续更新)
  • node-glob通配符
  • Python_网络编程
  • windows下如何用phpstorm同步测试服务器
  • 力扣(LeetCode)22
  • 配置 PM2 实现代码自动发布
  • 前端之Sass/Scss实战笔记
  • 试着探索高并发下的系统架构面貌
  • 数据仓库的几种建模方法
  • 协程
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​力扣解法汇总946-验证栈序列
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (区间dp) (经典例题) 石子合并
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (五)IO流之ByteArrayInput/OutputStream
  • (五)关系数据库标准语言SQL
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)插入排序
  • (转)linux 命令大全
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net6 webapi log4net完整配置使用流程
  • ?
  • [.net]官方水晶报表的使用以演示下载
  • [C++]高精度 bign (重载运算符版本)
  • [C++]运行时,如何确保一个对象是只读的
  • [flask]http请求//获取请求体数据
  • [IE编程] 了解Urlmon.dll和Wininet.dll