memset(a,0,sizeof(a)); //数组初始化为0
memset(b,-1,sizeof(b)); //数组初始化为-1
不使用cmp:在上升序列中找第一个比k大的
使用cmp:在下降序列中找第一个比k小的
两者默认都是从前向后找,lower更靠前,找到的可以等于k
bool cmp(int a,int b) {return a>b;}
lower_bound(a+1,a+n+1,k,cmp);
upper_bound(a+1,a+n+1,k,cmp);
栈
#include <stack>
stack<int> s;
s.push(1);
s.top();
s.pop();
队列
#include <queue>
queue<int> q;
q.push(1);
q.front(); //取队尾(最前面的)
q.pop(); //取队尾进行删除
优先队列(默认最大堆,以dj里的最小堆为例)
struct node
{
int id;
int w;
bool operator<(const node &x)const {return w>x.w;}
};
priority_queue<node> q;
q.push((node){x,0});
u=q.top().id;
q.pop();
q.empty();