为什么要用仿函数

函数指针不灵活,难以与STL其他组件配合使用

Adapter

将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作

STL中的adapter

function adapter

改变functor的接口,一般通过函数组合来体现

container adapter

改变container的接口, 如queue和stack其实是deque修改而来

iterator adapter

改变iterator的接口,如

  • insert iterator 将一般迭代器的赋值转变为插入,如copy函数的代码

    • back_inserter(Container& x)
    • front_inserter(Container& x)
    • inserter(Container& x, Iterator i)
  • reverse iterator 将一般迭代器的行进方向逆转
    • iostream iterator 将迭代器绑定到某个iostream对象上
    • istream iterator 如将operator++变为operator>>

总结

仿函数重载operator()
迭代器重载operator*,operator++等指针惯常行为
容器和迭代器身上的配接器是一种模板

参考

  • STL源码剖析第8章

最新文章

  1. iOS架构一个中型普通App的一些经验总结
  2. ThinkPHP 3.2 获取页面运行时间
  3. centos6 系统优化脚本
  4. Ubuntu下解决bash 没有那个文件或目录的方法
  5. opencv颜色识别代码分享
  6. 高效率dc升壓轉換器 應用技巧談 功率設計
  7. C#高级知识点概要(1) - 委托和事件
  8. gnome3
  9. 《HelloGitHub》第 16 期
  10. Go语言学习1
  11. Python-cookie,session
  12. 项目部署相关命令(pm2)
  13. ubuntu16 64 搭建lnmp环境
  14. CSS属性disabled和readonly的区别是什么
  15. 关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中
  16. 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
  17. (5)subprocess模块(子进程模块)
  18. activemq的学习
  19. VS2012/2013引用对话框的糟糕设计
  20. [LeetCode]160.Intersection of Two Linked Lists(2个链表的公共节点)

热门文章

  1. IFC布局特点
  2. python中的set集合
  3. Linux进程间通信(IPC)之信号量
  4. webdriervAPI(WebElement接口常用方法)
  5. postman Tests断言
  6. AS将一个项目导入到另一个项目中
  7. Interval List Intersections
  8. sql server第三方产品
  9. WijmoJS 以声明方式添加 Vue 菜单项
  10. SQL之事务