1

tinySTL

本人参考《STL源码剖析》“写”了一个低效的STL 子集。代码中有比较详细的注释,可作为阅读《STL源码剖析》的辅助材料。

本项目为本人的练习项目,所以暂时未提供测试,不能保证完全正确。请多多包涵。

至于怎么“低效”了,我后面会整理一些我已经能预见到会低效的实现。敬请期待。

源码

Github

已完成

  • 空间配置器
  • 普通迭代器
  • 反向迭代器
  • vector
  • list
  • deque
  • stack
  • queue
  • heap
  • priority_queue
  • rb_tree(实现来自GitHub
  • set
  • multiset
  • map
  • multimap
  • hashtable(其他 hash 函数参考here
  • unordered_set
  • unordered_map
  • unordered_multiset
  • unordered_multimap
  • type traits

    • integral_constant
    • true_type
    • false_type
    • is_same
    • remove_const
    • remove_volatile
    • remove_cv
    • is_void
    • is_null_pointer
    • is_integral
    • is_floating_point
    • is_array
    • is_pointer
    • is_lvalue_reference
    • is_rvalue_reference
    • is_reference
    • is_const
    • is_volatile
    • remove_reference
    • add_lvalue_reference
    • add_rvalue_reference
    • remove_pointer
    • __type_traits
  • algorithm

    • all_of
    • any_of
    • none_of
    • for_each
    • count
    • count_if
    • mismatch
    • find
    • find_if
    • find_if_not
    • find_end
    • find_first_of
    • adjacent_find
    • search
    • search_n
    • copy
    • copy_if
    • copy_n
    • copy_backward
    • move
    • move_backward
    • remove
    • remove_if
    • remove_copy
    • remove_copy_if
    • replace
    • replace_if
    • replace_copy
    • replace_copy_if
    • swap
    • swap_ranges
    • iter_swap
    • reverse
    • reverse_copy
    • rotate
    • rotate_copy
    • unique
    • unique_copy
    • is_partitioned
    • partition
    • partition_copy
    • stable_partition
    • partition_point
    • is_sorted
    • is_sorted_until
    • sort
    • partial_sort
    • partial_sort_copy
    • stable_sort
    • nth_element
    • lower_bound
    • upper_bound
    • binary_search
    • equal_range
    • merge
    • inplace_merge
    • includes
    • set_difference
    • set_intersection
    • set_symmetric_difference
    • set_union
    • max
    • max_element
    • min
    • min_element
    • equal
    • lexicographical_compare
    • is_permutation
    • next_permutation
    • prev_permutation
  • functional

    • hash
    • plus
    • minus
    • multiplies
    • divides
    • modulus
    • negate
    • equal_to
    • not_equal_to
    • greater
    • less
    • greater_equal
    • less_equal
    • logical_and
    • logical_or
    • logical_not
    • bit_and
    • bit_or
    • bit_xor
    • identity
    • select1st
    • select2nd
  • utility

    • initializer_list
    • forward
    • move
    • pair
    • make_pair
  • numeric

    • iota
    • accumulate
    • inner_product
    • adjacent_difference
    • partial_sum
  • memory(简单实现)

    • shared_ptr
    • weak_ptr
    • unique_ptr
    • addressof
    • uninitialized_copy
    • uninitialized_copy_n
    • uninitialized_fill
    • uninitialized_fill_n
  • cstring

    • strcpy
    • strncpy
    • strcat
    • strncat
    • strxfrm
    • strlen
    • strcmp
    • strncmp
    • strchr
    • strrchr
    • strspn
    • strcspn
    • strpbrk
    • strstr
    • strtok
    • memchr
    • memcpy
    • memset
    • memmove

TODO

感悟

  • 侯捷老师说过:“源码之前,了无秘密”。在自己”抄“了一遍容器代码之后,进一步熟悉了STL。对于选择不同的容器解决不同的问题,在知其所以然的情况下,自己更有信心能选出一个合适的容器了。
  • 开始明白拷贝(移动)构造函数、复制函数的意义和使用场景。

chenBright
817 声望57 粉丝

学习算法、C++、linux…