随笔分类 - STL
摘要:1、适配器是稍微修改某些功能,比如三个参数改为两个参数,函数的名称改一下等等,可以出现在容器、迭代器和仿函数中。 2、适配器相当于对某个东西进行封装,例如A是B的适配器,则真正的功能实现是在B中,可以通过继承B或者组合B来实现。 3、容器的适配器:改造后只提供部分接口 4、仿函数适配器 bind2n
阅读全文
摘要:1、仿函数为算法服务,特点是重载操作符() 2、一共分为3大类,包括算术类,逻辑运算类,相对关系(比较大小):都继承了binary_function 3、仿函数的一些调用示例,其中右边的仿函数没有继承binary_function,并没有真正的融入STL,有些特性可能没有。 4、仿函数可以继承两个类
阅读全文
摘要:、算法 1、算法通过迭代器来操作容器中的数据; 2、算法为模板函数; 二、迭代器与算法 1、根据移动能力,将迭代器分成了五类 2、使用萃取,输出各个容器中,迭代器的类别 3、其中istream, ostream的迭代器为input和output 4、算法根据迭代器的种类,去调用相应的函数。注意返回值
阅读全文
摘要:关联容器的查找和插入都很快,类似于数据库,通过key来查找value;底层通过红黑树和hast table来支持。 一、红黑树 1、按照key来排序 二、set/multiset 1、key即value,所以不允许修改值 2、将迭代器设置为const,来阻止修改其值; 3、set的操作,都交给了红黑
阅读全文
摘要:一、list 1、一个list包括一个node,本身是一个指针,所以一个list大小为四字节; 2、一个node抱括前后两个指针,以及一个数据; 3、iterator迭代器本身并不是指针,而是一个类(因为链表内部是分离的,需实现++等操作)(除了vector, array,其他的迭代器都是类), 并
阅读全文
摘要:一、模板 类模板和函数模板在实际调用时,略有不同:一个需要指定类型,一个不需要 特化:类型固定 template<> 偏特化:本来有两个泛化参数,结果其中一个固定。包括个数的偏特化和范围的偏特化 二、operator new 和malloc 基于list的各种各样的分配器 分配内存的操作,最后都会调
阅读全文
摘要:一、STL六大部件 容器(Containers):存放元素,内存由分配器搞定 分配器(Allocator):支持容器的内存分配 算法:操作容器元素的函数。与OO不同(面向对象将元素与函数放到一个类里),GP(模板编程)将数据放入容器,操作方法放入算法中。 迭代器(Iterator): 算法和容器之间
阅读全文