STL基础用法
STL序列容器
容器共同特征
.begin()
.end()
.size()
.swap(x)
.empty()
::iterator
基本函数:
.merge(listb)若A,B为有序,C也为有序,若A,B为无序,C也为无序,llistb完后为空
.remove(x) O(1) 删除 .remove(2) 把二全删除
.sort()排序
.splice(pos,listb)listb完后为空,pos指针
unique(list)连续元素压缩为单个元素,将其他的删除,大小减小
其他成员函数:
.front()
.back()
.push_front(t)
.push_back(t)
.pop_front(t)
.pop_back(t)
.insert(p,t) 插入数组 name.insert(pos,start,last)
.erase(p)
.clear()
定义:
头文件 include<list> include<iterator>
列表 list<类型> 名称(a,b) //赋值a个b
注意事项:
1.双向链表,不支持数组表示法与随机访问
2.指针找位置很重要
基本函数:
.push(x)
.pop()
.top()
.size()
.empty()
定义:
头文件 include<Stack> include<iterator>
栈 Stack<类型> 名称
注意事项:
1.栈(后进先出表),不支持数组表示法与随机访问
基本函数:
.push()
.front()
.back()
.size()
.empty()
.pop()
定义:
头文件 include<queue> include<iterator>
队列 Queue<类型> 名称
基本函数:
.push(x)
.pop()
.top()
.size()
.empty()
.emplace() 原地构造一个元素并插入队列
定义:
头文件 include<queue> include<iterator>
队列 priority_queue<类型> 名称
越大越优先
优先级自定义(运算符重载):
Struct Node{ int w,v } bool operator <(const Node &a,const Node &b){ return a.v>b.v (按照V从小到大输出) }
注意事项:
1. 对于基础类型 默认是大顶堆
priority_queue <int,vector<int>,greater<int> > q; 升序
priority_queue <int,vector<int>,less<int> > q; 降序
基本函数:
.front()
.back()
.push_front(t)
.push_back(t)
.pop_front(t)
.pop_back(t)
定义:
头文件 include<deque> include<iterator>
双端队列 deque<类型> 名称
注意事项:
1.Deque(双端队列),支持数组表示法与随机访问,类似vector
iterator
实质:广义的指针
for_each(begin,end,funtion不加括号) 头文件<algorithm> Funtion为普通Fun
STL关联容器
STL相关函数
基本函数:
beigin/end
front/back
erase/insert
size/empty/clear
push_back/pop_back
定义:
头文件 include<vector> include<iterator>
向量 vector<类型> 名称
注意事项:
1.向量(数组),支持数组表示法与随机访问
2.插入insert(指针+X位置,数值) 在指针开始的X位置前插入
3.可以直接初始化赋值 vector<类型> 名称A(名称B) 将B复制给A
基本函数:
size / empty / clear / erase
begin / end
find / insert
count 统计等于X的个数
lower-bound / unper_bound 大于等于X最小的/大于X最小的
定义:
头文件 include<set> include<iterator>
集合 set<类型> 名称
注意事项:
1.符合集合的三大性质之一:单一性
2.不符合集合的三大性质之二:随机性,无序性;本集合是有序集合
Map 一一映射 Multimap 多值映射 (未完成!!!!!!)
基本函数:
size / empty / clear / erase
begin / end
find / insert
first / second
定义:
头文件 include<map> include<iterator>
映射 map<键,值> 名称
注意事项:
1.map不能有重复的键值对,即如果插入键相同的键值对,则将覆盖掉同键值的键值对。multimap则不会覆盖。
定义:
头文件 include<algorithm>
sort(数组名+S,数组名+E,less<int>()) greater(降序)
sort(数组名+S,数组名+E) 升序
自定义优先级
sort(数组名+S,数组名+E,cmp)
bool cmp(类型 代指名A,类型 代指名B) //自定义 前A后B