STL Review

159436 share 352353.56 bonus 70470.71 tax 281882.85 actual

STL六大组件:1,容器。2,算法。3,迭代器。4,仿函。 5,适配器。6,分配器

顺序容器 Vector:

1,  分配的内存是以2的倍数动态增长。内存不够时,分配空间是当前的2倍。
    同时将原来的内容复制到新的空间。消耗较大。
    vector的allocator实现二级空间配置器,二级配置直接管理内存池, 伙伴系统,自由链表组成。
   
 
2,  连续存储空间,插入删除较慢。
3, 使用vector<int>.swap(vector_to_be_clear)来消除内存。
使vector_to_be_clear成为临时对象,释放内存。->小技巧。 
4, clear只会把vector的size清为零,不会释放内存。
5, vector是随机迭代器的顺序容器。
6, 随机存取优势。插入劣势。
7, 和dque相比,删除元素不会释放空间,重新申请空间时有额外的元素拷贝操作。
8,  access方法: [] , at,  front, back, data
    modifier方法: 
     assign, 
     push_back(), 
     pop_back(), 
     insert, 
     erase, 
     swap, 
     clear, 
     emplace, 
     emplace_back()

    capacity方法: 
     size, 
     max_size, 
     resize,  
     capacity, 
     empty, 
     reserve, 
     shrink_to_fit 

顺序容器 Deque:

1, 支持随机访问迭代器。
2, deque的内存空间分布是小片的连续,小片间用链表相连。
3, deque的重新分配要比vector快。重新分配后原有元素不需要拷贝。
4, 随机存取优势。插入劣势。 
5, 和vector相比,删除元素释放空间,重新申请空间没有额外元素拷贝操作。
6,  access方法: 
      [],
      at, 
      front, 
      back

    modifier方法: 
      assign, 
      push_back(), 
      push_front(), 
      pop_back(), 
      pop_front(), 
      insert, 
      erase,
      swap,  
      clear,  
      emplace, 
      emplace_front, 
      emplace_back

顺序容器 List:

1, 双向链表,内存空间不连续。
2, List支持双向迭代器。
3, 很好的支持任意地方插入和删除。
4, 频繁插入优势。存取劣势。
5, 方法:
      push_back(element)
      pop_back()  

关联容器 Map:

1,  map不保存数据时,每个节点占用 2个指针+1个枚举的空间。 
2, map是一个有序的key排列,提供双向迭代器。(非严格意义的平衡二叉树)。 
3, 插入相同的key会返回不成功。如果想支持使用multimap以支持1:N的存储能力。 
4, access: [], at     
    modifier: insert, erase, swap, clear, emplace,     emplace_hint     
    observer: key_comp, value_comp     
    operation:  find, count, lower_bound, upper_bound, equal_range     
    allocator: get_allocator

关联容器 unordered_map

 1, 方法buckets:
     bucket_count
     max_bucket_count
     bucket_size
     bucket

     Hash策略:
     load_factor
     max_load_facotr
     rehash
     reserve

     Observer:
     hash_function
     key_eq
     get_allocator

     Modifier:
     emplace
     emplace_hint
     insert
     erase
     clear
     swap

     元素查找:
     find
     count
     equal_range

     元素访问:
     at
     []

关联容器 Set:

1, 底层使用红黑树,同map
2, 默认对元素进行升序排列。
3, 不能直接修改key。需要先删除后插入。
4,  方法上就是红黑树的抽象方法,同map。
    capacity: empty, size, max_size
    modifier: insert, erase, swap, clear, emplace, emplace_hint
    observer: key_comp, value_comp
    operation: find, count, lower_bound, upper_bound, equal_range
    allocator: get_allocator

容器适配器 queue

1, 以标准STL容器deque为基础。
2, FIFO功能。
3,  方法: empty, size, front, back, push, pop, emplace,swap

容器适配器 stack

1, 以标准STL容器deque为基础。
2,FILO功能。
3, 方法: empty, size, top, push, emplace, pop, swap

顺序容器 array

1, 定长,定类型。
2, capacity方法: size, max_size(),empty
    access方法: [], at, front, back, data
    modifier:  fill, swap

发表评论

电子邮件地址不会被公开。 必填项已用*标注