/MiniSTL

Tiny STL based on SGI STL

Primary LanguageC++MIT LicenseMIT

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(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)

 容器类配接器(stackqueue):100%

 迭代器配接器(insert_iteratorreverse_iteratoristream_iterator):100%

 仿函数配接器(not1not2bind1stbind2ndcompose1compose2ptr_fun...):100%

编译环境

本仓库代码编译环境为macOS High Sierra 10.13.6,Homebrew GCC 7.4.0。

LICENSE

MIT.