
STL源码剖析笔记
穹野-嘻嘻
这个作者很懒,什么都没留下…
展开
-
STL源码剖析笔记 —— 第三章
迭代器型别之一:value type1.1 声明内嵌型别 template<class T> struct MyIter { typedef T valu_type; T* ptr; MyIter(T* p=0):ptr(p) {} T& operator*() const { return *ptr;} //... } template<cla...原创 2019-07-14 17:16:48 · 233 阅读 · 0 评论 -
STL源码剖析笔记 —— 第一、二章
C语言时代,欲将函数当做参数传递,唯有通过函数指针才能达成,但是函数指针有缺点,最重要的是它无法持有自己的状态,也无法达到组件技术中的可适配性——也就是无法再将某些修饰条件加诸于其上而改变其状态。C++可以采用仿函数形式内存分配操作由allocation::allocate()负责,内存释放由allocate::deallocate()负责;对象构造操作由::construct()负责,对象析...原创 2019-07-13 23:20:39 · 156 阅读 · 0 评论 -
STL源码剖析笔记 —— 第四章
vector1.1 构造函数:vector():start(0),finish(0),end_of_storage(0){} //start表示目前使用空间的头,finish表示目前使用空间的尾,end_of_storage表示目前可使用空间的尾vector(size_type n,const T& value) {fill_initialize(n,value);}void f...原创 2019-07-21 20:30:16 · 181 阅读 · 0 评论 -
STL源码剖析笔记 —— 第五章
二叉搜索树的删除:如果A只有一个子节点,我们就直接将A的子节点连至A的父节点;如果A有两个子节点,就以右子树内的最小节点取代A。右子树的最小节点:从右子树开始,一直向左走至底即是树的平衡2.1 调整平衡状态被破坏之各节点中最深的那个,便可使整棵树重新获得平衡。假设该最深节点为X,由于节点最多拥有两个子节点,而所谓“平衡被破坏”意味着X的左右两颗子树的高度相差2,因为我们可以轻易将情况分为4种...原创 2019-07-22 00:05:20 · 240 阅读 · 0 评论 -
STL源码剖析笔记 —— 第七章
任何应用程序想要使用STL内建的仿函数,都必须含入< functional >头文件为了方便起见,< stl_function.h>定义了两个class,分别代表一元仿函数和二元仿函数,任何仿函数,只要依个人需求选择继承其中一个class,便自动拥有了那些相应型别,也就自动拥有了配接能力仿函数的主要用途是搭配STL算法关系运算类仿函数:equal_to< T ...原创 2019-08-25 17:38:34 · 125 阅读 · 0 评论 -
STL源码剖析笔记 —— 第八章
配接器:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes可以一起运作改变仿函数接口者称为function adapter,改变容器接口者,称为container adapter改变迭代器接口者,称为iterator adapter每一个insert iterators内部都维护一个容器(必须由用户指定),容器当然有自己的迭代器,于是,当客户端对...原创 2019-08-26 00:14:18 · 160 阅读 · 0 评论 -
STL源码剖析笔记 —— 第六章
将无效的迭代器传给某个算法,虽然是一种错误,却不能保证能够在编译时期就被捕获出来,因为所谓“迭代器类型”并不是真实的型别,它们只是function template的一种性别参数对于所有的数值(numeric)算法,包括adjacent_difference(),accumulate(),inner_product(),partial_sum()等等,均需要包含头文件< numeric ...原创 2019-08-26 00:20:23 · 155 阅读 · 0 评论