data structure method in C++

* create
    * default constructor, copy constructor, move constructor
        * all containers have these constructors
   *  initializer list constructor
        * queue, priority_queue, stack has no initializer list constructor
    * fill constructor
        * deque, forward_list, and list have fill constructor
        * array is an aggregator, has no fill constructor
        * map, multimap, set, multiset have no fill constructor
        * queue, stack has no fill constructor, but priority_queue has
    * range constructor
        * deque, forward_list, and list have range constructor
        * array is an aggregator, has no range constructor
        * map, multimap, set, multiset, queue have range constructor
        * queue, priority_queue, stack has no range constructor
    * structure comparator and function comparator
        * map, multimap, set, multiset can have comparators in constructor
* destroy
    * destructor
        * all containers destory by destructor
* iterator
    * common iterators
        * values:
            * before_begin: Return iterator to before beginning
            * begin: Return iterator to beginning
            * end: Return iterator to end
            * cbegin: Return const_iterator to beginning
            * cend: Return const_iterator to end
        * all containers support operator++
        * unordered_set, unordered_multiset, unordered_map, unordered_multimap do not support operator--
        * forward_list does not support operator--
        * forward_list supports before_begin
    * reverse iterators
        * values
            * rbegin: Return reverse iterator to reverse beginning
            * rend: Return reverse iterator to reverse end
            * crbegin: Return const_reverse_iterator to reverse beginning
            * crend: Return const_reverse_iterator to reverse end
        * unordered_set, unordered_multiset, unordered_map, unordered_multimap do not have reverse iterators
        * forward_list does not have reverse iterators
    * queue, priority_queue, stack has no any iterators 
* add
    * array has fixed size, so cannot add new elements
    * add by iterator
        * insert()/emplace(): deque, list, vector
        * insert_after(): front_list
    * add at special position
        * add_front(): deque, front_list, list
        * add_back(): deque, list
        * push_back(): vector
    * add directly
        * insert(): map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
        * push(): priority_queue, queue, stack
    * add by operator[]: map, unordered_map
* change
    * element
        * change by iterator: any container except queue, priority_queue, stack
        * change at special position
            * front(): array, deque, forward_list, list
            * back(): array, deque
        * change by index: at() or operator[]; array, deque, map
    * container
        * fill(): array
        * assign(): deque, forward_list, list
        * swap(): any container
        * merge(): forward_list, list
        * splice
            * splice_after(): forward_list
            * splice(): list
        * unique(), reverse(), sort(): forward_list, list
    * capacity: resize(), shrink_to_fit(), reserve(); vector
    * queue, priority_queue, stack cannot change content, only support swap();
* query
    * query by iterator: queue, priority_queue, stack has no any iterators 
    * query by index: 
        * at() or operator[]: array, map, unordered_map
        * get<>(): array, deque
        * data(): array
    * element
        * front(): array, deque, forward_list, queue
        * back(): array, deque, queue
        * top(): priority_queue, stack
        * find(): map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
        * count(): map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
        * lower_bound(): map, multimap, set, multiset
        * upper_bould(): map, multimap, set, multiset
        * equal_range(): map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
    * container
        * size(): all containers
        * max_size(): all containers except queue, priority_queue, stack
        * empty(): array, deque, forward_list, map, multimap, set, multiset, queue, priority_queue
* delete
    * element
        * pop_front(): deque, forward_list, list
        * pop_back(): deque, list, vector
        * pop(): priority_queue, queue, stack
        * erase(): any container except queue, priority_queue, stack
        * erase_after(): forward_list
        * remove(), remove_if(): forward_list
    * container
        * clear(): any container except queue, priority_queue, stack
    * array cannot delete because size is fixed