learnSTL
implement some basic components of STL based on C++11 when learning C++ generic programming and STL. Reference to libc++, delete some relatively complicated part, and also add some useful data structure.
Complier: clang++3.8.0 and above.
- memory
- pointer_traits
- allocator, allocator_traits
- smart pointer
- iterator
- iterator_traits
- iterator adaptor
- utility
- swap, swap_ranges, iter_swap
- move, forward
- rel_ops
- pair, make_pair
- tuple
- tuple
- tuple_size, tuple_element, get
- make_tuple, tie, forward_as_tuple, ignore
- algorithm
- swap_ranges, for_each
- range compare
- equal, lexicographical_compare, mismatch
- copy, move and assignment
- copy, copy_if, copy_n, copy_backward
- move, move_backward
- fill, fill_n
- generate, generate_n
- transform
- replace
- replace, replace_copy, replace_if, replace_copy_if
- remove
- remove, remove_copy, remove_if, remove_copy_if
- find
- count, count_if (non_sorted)
- min, max, min_max, min_element, max_element, min_max (non_sorted)
- find, find_if, find_if_not (non_sorted)
- adjacent_find (non_sorted)
- lower_bound, upper_bound, equal_range, binary_search (sorted)
- pattern-matching
- search, search_n, find_end, find_first_of
- includes, all_of, any_of, none_of
- mutaing
- reverse, reverse_copy
- rotate, rotate_copy
- is_partition, partition, partition_copy, partition_pointer, stable_partition
- is_permutation, next_permutation, prev_permutation
- sorting
- shuffle
- set (sorted)
- merge
- set_union, set_intersection, set_difference, set_symmetric_difference
- numeric
- iota
- accumulate, inner_product
- partial_sum, adjacent_difference
- container
- array
- vector
- deque
- forward_list
- list
- set
- multiset
- map
- multimap
- unordered_set
- unordered_multiset
- unordered_map
- unordered_multimap
- stack
- queue
- priority_queue