codingwei-lab/MiniSTL

Tiny STL based on SGI STL

★ 0Forks 0GitHub ↗Compare

README

MiniSTL

本仓库原是《STL源码剖析》一书的代码合集,并在其基础上运用部分C++11特性进行了代码改写。最终希望根据SGI STL SOURCE完成一个简易STL标准库。

学习计划

针对SGI STL Source,有学习计划如下:

  • 第一阶段:通读全文,了解数据结构的底层实现与算法流程,针对书本完成代码撰写与整理。
  • 第二阶段:补全各容器的实现。
  • 第三阶段:针对容器类加入C++11新特性,如move语义,initialized_list构造等,撰写完备的单元测试。(进行中)
  • 第四阶段:测试MiniSTL性能,并与std作对比,总结原因。

完成进度

  1. 空间适配器(allocator)

 构造析构工具(contruct.h):100%

 二级空间适配器(alloc.h):100%

 内存基本处理工具(uninitialized.h):100%

  1. 迭代器与traits编程技法(iterator && traits)

 iterator_traits(stl_iterator.h):100%

 type_traits(type_traits.h):100%

  1. 序列式容器(sequence containers)

 vector(stl_vector.h):100%

 list(stl_list.h):100%

 deque(stl_deque.h):100%

 stack(stl_stack.h):100%

 queue(stl_queue.h):100%

 priority_queue(stl_priority_queue.h):100%

 slist(slist.h):100%

  1. 关联式容器(associattive containers)

 rb_tree(rb_tree.h):100%

 set(stl_set.h):100%

 map(stl_map.h):100%

 multiset(stl_multiset.h):100%

 multimap(stl_multimap.h):100%

 hashtable(hashtable.h):100%

 hashset(hashset.h):100%

 hashmultiset(hash_multiset.h):100%

 hashmultimap(hash_multimap.h):100%

  1. 算法(algorithm)

 数值算法(stl_numeric.h):100%

 基本算法(stl_algobase.h):100%

 set相关算法(stl_algoset.h):100%

 heap算法(heap_algorithm.h):100%

 其他算法(stl_algo.h):100%

  1. 仿函数(function object)

 算术、关系运算、逻辑运算仿函数(stl_function.h):100%

  1. 配接器(adapter)

 容器类配接器(stack、queue):100%

 迭代器配接器(insert_iterator、reverse_iterator、istream_iterator):100%

 仿函数配接器(not1、not2、bind1st、bind2nd、compose1、compose2、ptr_fun...):100%

编译环境

本仓库代码编译环境为macOS Big Sur 11.1,Apple clang version 12.0.0。

LICENSE

MIT.

Contributors

zsmj2017

Issues