第9章 顺序容器
顺序容器
1) vector:支持快速随机访问
2) list:支持快速插入删除
3) deque:双端队列
1. 容器定义的类型别名:
2. 容器的beg和end成员:
3. 添加元素:
4. 删除元素:
5. 访问元素:
6. 容器大小的操作:
7. 赋值和交换:
迭代器
1. 任何修改容器内部元素的操作都可能使迭代器失效。
顺序容器适配器
1. 适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。
2. stack和queue适配器都基于deque容器实现, priority_queue适配器基于vector容器实现的。
3. 适配器通用操作:
栈:
s.push(item) :在栈顶压入新元素
s.pop() :删除栈顶元素,但不返回其值
s.top() :返回栈顶元素的值,但不删除该元素
队列:
q.push(item) :在队尾插入新元素
q.pop() :删除队首元素,不返回其值
q.front() :返回队首元素的值,但不删除该元素
q.back() :返回队尾元素的值,但不删除该元素
q.emplace() :
优先级队列
q.push(item) :在基于优先级的适当位置插入新元素。
q.pop() :删除队首元素,不返回其值
q.top() :返回最高优先级的值,但不删除该元素
q.emplace() :
第10章 关联容器
- 关联容器:支持通过键来高效地查找和读取元素。
map:关联数组,元素通过键来存储和读取
set:大小可变的集合,支持通过键实现快速读取
multimap:支持同一个键多次出现的map型
multiset:支持同一个键多次出现的set型 - pair类型:两个成员first和second
- map类型:
1) map对象的定义:
2) map定义的类型:
map<K,V>::key_type :键的类型
map<K,V>::mapped_type :键锁关联的值的类型
map<K,V>::value_type :pair类型
3) 给map添加元素:
使用下标访问,不存在时自动添加
使用insert插入
4) 查找map中的元素:
cout(k) :返回k出现的次数
find(k) :存在返回对应的迭代器,不存在则返回超出末端的迭代器
5) 从map中删除元素:
4. set类型
set类型只是单纯的键的集合。
当只想知道一个值是否存在时,使用set容器是最适合的。
set不支持下标操作。
set和map一样,键值时不可修改的,只可读出。
5. mutlimap和mutliset类型
允许一个键对应多个实例。
其他特殊的操作:
第11章 泛型算法
- 泛型:算法可以操作在多种容器上、内置数组类型甚至其他类型的序列上。
- 算法是基于迭代器及其操作实现,而并不是基于容器操作。
- 插入迭代器:是可以给基础容器添加元素的迭代器。
- 算法迭代器分5个类别:
- 算法形式:
- list特有得算法: