重温《STL源码剖析》笔记 第六、七、八章 next_permutation (字典序)
源码之前,了无秘密 ——侯杰
第六章算法
next_permutation
比如:01342 -> 01423 -> 01432
方法:从尾端开始往前寻找两个相邻的元素,令第一个元素为*i,第二个元素为*ii,
且满足 *i <*ii,找到这样一组相邻元素后,再从最尾端开始往前检验,找到第一
个大于*i的元素,令为*j,将i,j元素对调,再将ii之后的所有元素颠倒排行,此即
所求之“下一个”排列组合。
prev_permutation:类似于next_permutation
第七章:仿函数
仿函数:调用者可以像函数一样地被调用,在被调用者则以对象所定义的function call operator
扮演函数的实质角色。
实现观点而言,仿函数其实上就是一个”行为类似函数“的对象。为了能够”行为类似函数”,
其类别定义中必须自定义(或说改写。重载)function call 运算子(operator()),
拥有这样的运算子后,就可以在仿函数的对象后面加上一对小括号,以此调用仿函数
所定义的operator()
算术类仿函数:
加法:plus<T>
template<class T>
Struct plus:public binary_function<T,T,T> {
T operator()(const T &x, const T &y) const {
return x+y;
}
第八章:配接器
配接器在STL组件的灵活组合运用功能上,扮演着轴承,转换器的角色。
将一个class的接口转换为另一个class的接口,使原本接口不兼容而不能合作的
class,可以一起运作。
应用于容器(container adapter):queue、 stack
应用于迭代器(iterator adapters):insert iterators、 reverse iterators、 iostream iterators
应用于仿函数(function adapters):
最新文章
- jsp动作元素之forward指令
- Hasor-Core v0.0.4 &; Web v0.0.3 发布
- MS SQLServer 操作XML语句的存储过程
- tomee 第一个 远程调用 Message-driven bean(MDB)
- 自动化测试工具Selenium和QTP的比较
- 怎么安装phpcms?PHPCMS V9安装图文教程
- 使用Eclipse的几个必须掌握的快捷方式(能力工场小马哥收集)
- MySQL表结构为InnoDB类型从ibd文件恢复数据
- 在 SQL Server 2012 附加 Adventure Works 範例資料庫
- iWatch # 初始化工程
- mvc项目如何在IIS7.5
- andorid之摄像头驱动流程--MTK平台
- linux_文件类型
- if-case-循环语句
- 基础学习14天 MD5加密
- python内置函数 和模块函数总结
- ASP.NET MVC概述及第一个MVC程序
- rsync算法原理和工作流程分析
- noip第26课作业
- Linux 系统访问控制列表ACL
热门文章
- [问与答]怎样在 Android Stuido中删除一个project
- 采用JSP+JavaBean的方式进行简单的实现用户的网页登陆实例
- 怎样写一个与Win8 IE11兼容的标准BHO?
- CRM导入组织报实例名称必须与计算机名称相同的问题
- OpenCV由汉字生成图片(透明)----可以对抗论文查重!!!
- SpriteBuilder中CCB精灵对象的Sprite frame为什么有时候不能修改
- Struts2中的缓存----以Injector为例
- CCT之CAMERA TUNNING调试学习总结
- 打开Visual Studio 2010,左下角显示正在从包...加载工具箱内容,卡住5、6秒!!!
- rails关于user密码hash的重构