一边看侯捷老师(STL源码分析)课程,一边记录下来,仅是给自己当笔记看的。
1.源代码之分布(VC,GCC)
不同编译器的标准库文件分布不同,vc在include文件夹下,GUN C++分布稍微复杂,include/c++/...
2.OOP(面向对象编程)vs GP(泛型编程)
2.因为标准库的sort()函数需要的迭代器是具有randomaccess这种特性的,即就是需要的数据空间是连续的,可以完成加几到下一个数据这样的操作,但list不符合标准,他的空间是不连续的,每个数据都是独立的空间,所以他无法供应这样的迭代器。即:标准库sort()是对迭代器有一定要求的,但list不具备,所以它不能使用。
3.操作符重载and模板
源代码中需要了解的是操作符重载和模板,因为被大量使用。 模板:类模板,函数模板,成员模板。
类模板:(泛化,特化)
4.分配器
operator new()和malloc():operator new()函数最终调用都会到malloc()上,vc的分配器没有什么独特设计,它就是调用c的malloc()和free()来分配,它的接口设计使得我们并不好直接用,但容器使用就比较好。
模板用到的分配器都是allocators类
GUN C++ 2.9真正采用的alloc分配器,他是malloc申请一大块内存,再切分(比较好),但在4.9又恢复成以前的allocators,alloc改成了_pool_alloc()
视频地址:视频链接