STL组成
- 容器
- 配接器
- 算法
- 迭代器
- 仿函数
- 空间配置器
主要讲解容器和算法,不讲解其他的
容器分类
- 序列式容器:
vector
list
deque
stack
queue
heap
priority_quue
slist
(queue
和stack
是配接器) - 关联式容器:
set
map
multiset
multimap
hash_set
hash_map
hash_multiset
hash_multimap
vector
- 连续空间
- vector 动态空间
- array 静态空间
- 动态空间是以原大小的两倍进行扩充,重新分配时,迭代器会失效
主要操作有push_back
pop_back
erase
clear
insert
size
empty
初始化
#include <vector>
int main(){
// size=0的vector
vector<int> a;
// 初始化size,但元素为默认值
vector<int> b(10);
// 初始化size并设置默认值
vector<int> b(10,2);
}
list
- 非连续空间
- STL的list是一个环状双向链表
- 插入和删除操作都不会造成原迭代器失效
主要操作有:push_front
push_back
erase
pop_front
pop_back
clear
remove
unique
splice
merge
reverse
sort
size
empty
内部定义了一个transfer
函数,为splice
sort
merge
等操作提供基础。功能是将连续范围内的元素迁移到某个特定位置之前
deque
- 双向开口的