STL
vector
#include<vector>
动态数组 内存连续
例题HDU4841
stack 栈
#include<stack>
例子:泡腾片先进盒子后出来
- 先进后出
stacks;定义
s.push(item);添加到栈顶
s.top();返回顶部元素 不删除
s.pop();删除顶部元素 不会返回
出栈时先top得到栈顶元素再pop删除栈顶元素
s.size();
s.empty();检查是否为空 空返回True 否则返回false
例题HDU1062
queue队列
#include<queue>
例子:先排队先办事
- 先进先出
queueq;定义
q.push(item);添加
q.front();返回首元素 不删除
q.pop();删除队首元素
q.back();返回队尾元素
q.size();返回元素个数
q.empty();检查是否为空 若为空 返回true
例题HDU1702
优先队列 priority_queue
优先级 二叉堆
链表 list
双向链表 通过指针访问
vector 插入删除少 访问频繁
list 插入删除频繁 访问少
例题HDU1276
set 集合
通过二叉搜索树实现
集合中的每个元素只出现一次并且时排好序的
O(log2n)
setA;定义
A.insert(item);添加
A.erase(item);删除item元素
A.clear();清空A
A.empty();判断A是否为空
A.size();返回A的元素个数
A.find(k);返回一个迭代器指向键值k
A.lower_bound(k);返回一个迭代器指向键值不小于k的第一个元素
A.upper_bound();返回一个迭代器指向键值大于k的第一个元素
map
查找 插入 访问
通过平衡二叉搜索树实现
O(log2n)查找
操作
例题HDU2648