主要是记录上述的基本操作,以防忘记,可以随时查阅
vector
基本操作
vector<Type> M
定义一个vector的变量M.push_back(a)
尾部插入数字M.insert(vec.begin() + i, a)
插入元素: 在第i+1个元素前面插入aM.erase(vec.begin() + 2)
删除元素 删除第三个元素M.erase(vec.begin() + i, vec.begin() + j)
删除区间M[0]
使用下标访问元素: 下标从0开始M.size()
向量大小:M.clear()
清空
stack
基本操作
stack<Type> M
定义一个stack的变量M.push()
在栈顶增加元素M.pop()
移除栈顶元素M.top()
返回栈顶元素M.size()
返回栈中元素数目M.empty()
堆栈为空则返回真
queue
queue<Type> M
定义一个queue的变量M.push()
从已有元素后面增加元素M.pop()
清除第一个元素M.front()
显示第一个元素M.back()
显示最后一个元素M.size()
输出现有元素的个数M.empty()
查看是否为空范例 是的话返回1,不是返回0;
deque
基本操作
deque<Type> M
定义一个deque的变量M[ ]
:用来访问双向队列中单个的元素。M.front()
:返回第一个元素的引用。M.back()
:返回最后一个元素的引用。M.push_front(x)
:把元素x插入到双向队列的头部。M.pop_front()
:弹出双向队列的第一个元素。M.push_back(x)
:把元素x插入到双向队列的尾部。M.pop_back()
:弹出双向队列的最后一个元素。M.size()
输出现有元素的个数M.empty()
查看是否为空范例 是的话返回1,不是返回0;
priority_queue
priority_queue<int> M
定义一个优先级队列的变量(默认大根堆)M.push(x)
:把元素x插入到大根堆中M.pop()
:弹出大根堆的堆顶元素M.top()
返回大根堆元素M.size()
:弹出大根堆的元素个数M.empty()
:是否为空priority_queue<int, vector<int>, greater<int> > p
小根堆
priority_queue<Type, Container, Functional>
//Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。
//如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator<,也就是优先队列是大顶堆,队头元素最大。
struct Node{
int x,y;
Node(int a=0, int b=0):
x(a), y(b) {}
};
struct cmp{
bool operator()(Node a, Node b){
if(a.x == b.x) return a.y>b.y;
return a.x>b.x;
}
};
priority_queue<Node, vector<Node>, cmp>p;