Boolan STL 第一周
GP(Generic Programming 泛型编程):使用模板作为主要工具来编程。
C++标准库与C++标准模板库:
STL六大部件:容器(container)、分配器(allocator)、算法(algorithms)、迭代器(iterator)、适配器(adapter)、仿函数(functor)
STL六大部件关系
复杂度Big-oh:
Range-based For Statement & Auto(c++11)
容器分类:Sequence Container(序列式容器)、Associative Container(关联式容器):unordered container(不定序容器属于关联式)
容器结构:
array:数组,定长
vector:动态数组,在内存中可向后扩展,每次以两倍的空间向内存中申请新地址并将以前的内容拷贝进新空间内
list:双向链表,提供自身sort()函数
☆容器自身提供的函数如sort()、find()等总是优于系统提供的函数。
forword_list:单向链表,不提供push_front功能
deque:双向开口进出,内存中是分段连续的,使用者感觉整体连续。每次两端空间用完后会向外扩充1个buffer。
stack(先进后出)、queue(先进先出):本质由deque实现,用了Adapter设计模式,技术上称为容器适配器。
set(unique)/multiset(UNunique):关联式容器,底层使用红黑树,只能存储一个元素,也是key,set和multiset区别在于key是否唯一。
map(unique)/multimap(UNunique):关联式容器,底层使用红黑树,存储一个key,一个value,map和multimap区别在于key是否唯一,且multimap不提供如C[key]调用方法。
unordered_set(unique)/unordered_multiset(UNunique):关联式容器,底层Hash_Table
unordered_map(unique)/unordered_multimap(UNunique):关联式容器,底层Hash_Table
分配器:一般使用默认,gnu和vc也提供其他分配器,但是没必要手动调用分配器来申请释放内存。