基于C++11
的简易STL标准库,主要参考侯捷老师《STL源码剖析》的SGI
版本以及我的开发环境gcc 5.4.0
的libstdc++
版本,实现了大部分STL中的容器与函数。实现过程中的一些收获,主要是《STL源码剖析》中没有提及的部分,会写在下方。
本项目旨在学习常用数据结构与算法以及 C++ template 编程,目前代码约7K
行,使用中文文档与中文注释,忽略掉一些针对多线程优化的代码和异常处理,仍存在许多不足与bug,会一直进行维护,修复发现的bug。
-
allocator.h
:空间分配器,包括 malloc_alloc 和 pool_alloc- malloc_alloc 直接使用 malloc() 分配内存
- pool_alloc 使用基于 free-list 的内存池实现,容器缺省使用 pool_alloc 分配内存
-
construct.h
:标准构造/析构函数 -
type_traits.h
:POD与非POD类型萃取器,基于g++ 5.4.0
中的 integral_constant 等编译器内置类型计算 -
iterator.h
:迭代器萃取器以及迭代器全局函数 -
uninitialized.h
:内存初始化函数 -
vector.h
-
list.h
-
基于
deque.h
的stack.h
和queue.h
-
heap.h
-
基于
tree.h
的set.h
和map.h
-
基于
hashtable.h
的unordered_set.h
和unordered_map.h
-
algorithm.h
:泛型函数
-
test_vector.cpp
-
test_list.cpp
-
test_deque.cpp
-
test_heap.cpp
-
test_tree.cpp
-
test_hashtable.cpp
测试包括容器的所有成员函数测试以及主要接口的效率测试,发现自己重写的 TinySTL 容器效率要比 gcc 5.4.0 的 libstdc++ 版本里的容器好上一些。
algorithm.h
中的一系列算法待补完