1. 介绍红黑树
2. 平衡二叉树,构建,插入
3. 堆构建
4. 面向对象三个基本特征
http://www.cppblog.com/snowball/archive/2008/07/01/55051.html
5. STL六大组件
http://blog.csdn.net/huayehanshan/article/details/3864191
http://blog.tianya.cn/blogger/post_show.asp?BlogID=53321&PostID=469574
Containers : 实现基本的数据结构, 如 vectorlistmap
Allocators: 负责空间的分配
Algorithms: 常用算法的封装,如 sortfind(查单个字符第一次出现的迭代下标)search(查一个字符串第一次出现的迭代下标) emovecopyerase
max_elementmin_element.
Iterators: 算法和容器的粘合剂,是所谓的“泛型指针”。每个容器都提供了遍历自己元素的方法。
Function Objects:可作为算法的某种“策略”,如less_equal(), greater() 用于sort()算法
Adatpters: 一种用来修饰容器、仿函数、迭代器接口的东西。如STL的queue和stack,其底层都是deque, 只不过由不同的Adapers,修改了顶层的界面,表现出不同的行为。
6. vector的内存模型
http://my.oschina.net/u/164131/blog/132396
简单看来,为了支持随机访问,vector中分配的是一段连续的内存,当内存的size>= capacity时,会重新申请一个2倍的内存,将原内容copy过去,这会影响性能。因此一般可以初始时就在构造参数中或用reverse保留一段较大内存。容器的内存管理是由allocator负责的,管理内存池。释放内存后,会将内存放回内存池,并不直接返给操作系统。
vector的比较操作符,其中,对于operator==和operator!=,如果vector对象拥有相同的元素个数,并且对应位置的元素全部相等,则两个vector对象相等;否则不等。对于operator<、operator<=、operator>、operator>=,采用字典排序策略比较。
《STL 源码剖析》 《Effective STL》
7. DLL 隐式加载和显示加载
http://liuviphui.blog.163.com/blog/static/2022730842013544056165/