void printElem(int elem, const char* prefix){
cout << prefix << elem << endl;
}
for_each(vec.begin(), vec.end(), bind2nd(ptr_fun(printElem), "Element: "));

1. C++ template

STL 缘何称之为标准模板库;

  • 容器是以 class templates 完成;
  • 算法以 function templates 完成;
  • 仿函数是一种将 operator() 重载的 class templates;
  • 迭代器则是一种将 operator++ 和 operator* 等指针习惯行为重载的 class template

配接器(adapter),用于容器迭代器身上的配接器,也是一种 class templates;

那么应用于仿函数身上的配接器,如何能够“事先”对一个函数完成:

  • 参数的绑定;
  • 执行结果的否定;
  • 多方函数的组合;

最后修饰结果(视为一个表达式,expression)将被传递给 STL 算法使用,STL 算法才是真正使用这个表达式的主格(调用者),显然,只有在真正使用(调用)某个函数(或仿函数)时,才有可能对参数和执行结果做任何干涉。

配接器:

  • 应用于容器上:container adapters:

    • 内藏了一个 container member
  • 应用于迭代器:iterator adapters:
    • 比如像 reverse iterator(adapters)内藏了一个 iterator member
    • 像 stream iterator(adapters)内藏了一个 pointer to stream
  • 应用于函数:function adapters:
    • 内藏了一个 member objects,其类型等同于它所要配接的对象(该对象显然是一个可配接的仿函数,adaptable functor)

最新文章

  1. javascript设计模式-策略模式
  2. cat &lt;&lt;EOF用法
  3. java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux
  4. Unity3D研究院之IOS本地消息通知LocalNotification的使用
  5. 4k 对齐,你准备好了吗?
  6. springsecurity4+springboot 实现remember-me 发现springsecurity 的BUG
  7. android:allowbackup=&quot;true&quot;
  8. Leetcode算法刷题:217和219题 Contains Duplicate
  9. token 入门教程
  10. UEFI模式 Thinkpad t470p Ubuntu 16.04 LTS
  11. Linux系统安装和网络配置
  12. 批量备份数据库脚本(PowerShell版)
  13. 完整的Django入门指南学习笔记7 网页自动翻译
  14. MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)
  15. Textview源码+绘制过程解析
  16. JAXB--@XmlElementWrapper注解和泛型一起使用
  17. elasticsearch索引目录设置
  18. 在centos上安装smplayer播放器
  19. github访问太慢解决方案
  20. Bzoj 4371: [IOI2015]sorting排序 二分

热门文章

  1. Hibernate之API初识及增删改查实现
  2. 【2017 Multi-University Training Contest - Team 10 】Monkeys
  3. [D3] Reuse Transitions in D3 v4
  4. DC针对pipeline的优化
  5. C#游戏开发高速入门 2.1 构建游戏场景
  6. 【57.97%】【codeforces Round #380A】Interview with Oleg
  7. Android layer-list的属性和使用具体解释
  8. Python代码优化及技巧笔记(一)
  9. swift项目第九天:正则表达式的学习
  10. spark提交应用的方法(spark-submit)