目前在学习STL,看到一个开源的项目MyTinySTL,非常不错。想着照着这个代码自己敲一遍应该也能有些进步。然后就开始了学习过程。
首先分析的是vector
以下是由vector.h关联的所有头文件

首先分析一下memory.h
该文件定义了两个类,temporary_buffer 和auto_ptr
auto_ptr实现了一个智能指针
temporary_buffer 定义了临时缓冲区的类模板,其中会使用malloc函数来分配空间
这个文件中还定义了一个函数
constexpr Tp* address_of(Tp& value) noexcept
这个函数能返回一个对象的地址,后面用的比较多
heap_algo.h
// 这个头文件包含 heap 的四个算法 : push_heap, pop_heap, sort_heap, make_heap,

//其中 sort_heap 函数接受两个迭代器,表示 heap 容器的首尾,不断执行 pop_heap 操作,直到首尾最多相差1
// 每执行一次 pop_heap,最大的元素都被放到尾部,直到容器最多只有一个元素,完成排序
functional.h
// 这个头文件包含了 mystl 的函数对象与哈希函数
函数对象就是定义了一个类(或结构体),其中重载了()操作符,则定义该类的对象后,对象后面加上括号,就可以表示一个函数,就会调用那个重载的函数。
定义了plus, minus, multiplies, devides, modules, negate,equal_to, not_qual_to,greater, less, greater_queal, less_equal, logic_and, logical_or, logical_not, 证同函数(返回原来的值) 等
另外定义了加法和乘法的证同元素?
这个是什么意思呢?
下面是文心一言上的解释
这段代码是C++模板函数,用于找到加法操作的单位元。单位元在数学中是一个特殊的元素,与任何其他元素相加都不会改变那个元素的值。对于加法来说,单位元通常被定义为0,因为任何数与0相加都等于它自己。
另外还定义了选择函数,投射函数,哈希函数
algo.h
这个文件包含了mystl的一系列算法,包括:
| all_of |
||
| any_of |
||
| none_of |
||
| count |
||
| count_if |
||
| find |
||
| find_if |
||
| find_if_not |
||
| search |
||
| search_n |
||
| find_end |
深入学习MyTinySTL:C++STL中的vector与相关算法,

本文讲述了作者在学习MyTinySTL过程中对vector和相关头文件如memory.h(智能指针auto_ptr和临时缓冲区)、heap_algo.h(堆排序算法)以及functional.h(函数对象和哈希函数)的探索,展示了C++STL中的关键概念和技术细节。
最低0.47元/天 解锁文章
569

被折叠的 条评论
为什么被折叠?



