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