Boolan STL与泛型编程 第一周笔记
泛型编程
一)
我们的目标:
Level 0:使用C++标准库
Level1:认识C++标准库(胸中自由丘壑)
Level2:良好使用C++标准库
Level3:扩充C++标准库
C++ standard library vs. standard template library (STL)
前者包含后者
C++标准库的header files 不带.h
新式 C headerfiles 不带 .h
旧式C headerfiles 带有 .h
重要的网页和书籍
cppreference.com
gcc.gnu.org
the C++ standard library
STL源码剖析
二)
STL六大部件:
容器 containers,存放数据
分配器 allocators 支持容器进行分配内存,不写就有默认值
算法 algorithms 数据操作方法
迭代器 iterators 泛化的指针
适配器 adapters 包括容器适配器、迭代器适配器、仿函数适配器
仿函数 functors
其关系如下:
范围for 可以遍历容器中所有元素。当需要通过范围for改变容器元素内容的时候可以定义一个引用来实现
For (auto& i: vec)
i+=i+3;
容器——结构与分类
分类:sequence containers 和 associative containers
Sequence containers:
Array:封闭式,固定空间
Vector:前封闭,后面可以扩充
Deque:双向队列,前后都可以扩充
List: 元素不连续,由双向指针链接
Forward—list:单向链表,由单个指针链接
Associative containers:
Set中key就是value,二者合一
Map 中key和value 单独存放
Set和map存放东西必须独一无二,没有重复,
Multiset和multimap中可以存放重复内容