C++标准库
第一讲
一、认识headers、版本
1.C++标准库 vs STL
C++标准库大于STL(标准模板库)
标准库以header files形式呈现
网站
cplusplus.com
cppreference.com
gcc.gnu.org
二、STL体系结构基础介绍
1.STL六大部件
容器(containers)
分配器(allocators)
算法(algorithms)
迭代器(iterators)
适配器(adapters)
仿函数(functors)
分配器处理内存分配。分配器可以不写,会有默认的分配器。
iterator 泛化的指针
C++11
range-based for
auto keyword
三、容器之分类与各种测试(一)
1.容器-结构与分类
(1)Sequence Containers
Array(C++11)
Vector
Deque
List 双向链表
Forward-List(C++11)
(2)Associative Containers
Set/Multiset 红黑树(高度平衡二分树)每个节点key和value是同一个
Map/Multimap 红黑树 map每个节点有key和value
Multi可以重复
(3)Unordered Containers(C++11)
Unordered Set/Multiset
Unordered Map/Multimap
HashTable Separate Chaining
2.使用容器array
不能扩充。
四、容器之分类与各种测试(二)
1.使用容器vector
find 0秒?
vector扩展方式:两倍扩展
五、容器之分类与各种测试(三)
1.使用容器list
list:双向链表
vector是一块连续的空间,每次扩展时需要重新申请两倍的空间
2.使用容器list
list:双向链表
list自己也有sort,要比全局的sort快
3.使用容器forward list
forward list:单向链表
4.使用容器deque
deque:双向进出
分段连续,每一段(buffer)是连续的。每次扩容一个buffer。
deque没有sort,需要用全局sort
5.使用容器stack
stack:先进后出
没有iterator
6.使用容器queue
queue:先进先出
六、容器之分类与各种测试(四)
1.使用容器multiset
multiset:可以重复
insert
自己find比全局find快
2.使用容器multimap
pair
3.使用容器unordered_multiset
使用hashtable实现
篮子(bucket_count())比元素多,有的篮子没有元素
4.使用容器unordered_multimap
5.使用容器set
7.使用容器hash_set/hash_map/hash_multiset/hash_multimap
七、分配器之测试
allocator