队列(queue)、优先队列(priority_queue)、双端队列(deque)

队列:先进先出

头文件:<queue>

基本操作

queue<Type>q;   //定义队列,Type可以系统定义的数据类型,也可以是自己定义的结构体类型

q.push(item);       //把item放入队列的尾部

q.front();   //返回队首元素,但不会删除

q.pop();    //删除队首元素

q.back();  //返回队尾元素

q.size();    //返回元素个数

q.empty();   //检查队列是否为空

 

 

优先队列 :按照权值进行队列排序

头文件:<queue>

基本操作

priority_queue<Type,vector<Type>,greater<Type> >q; //队首元素最小。 若是自定义结构体,需要重载运算符>
priority_queue<Type,vector<Type>,less<Type> >q; //队首元素最大.。   若是自定义结构体,需要重载运算符<

bool operator >(struct node p,struct node q) {//无论是重载>还是重载<,下面的比较>都是从小到大排序,<都是从大到小排序
return p.x>q.x; // >号代表从小到大排序 (按照x排序)
}

q.top();   // 返回队头元素

q.empty();    //判断队列是否为空

q.size();   //返回队列内元素个数

q.push();    //插入元素到队尾 (并排序)

q.pop();   //删除队头元素

 

 

双端队列:队列和栈的结合体

头文件:<deque>

基本操作:

deque<Type>de;  //创建一个双端队列

de.front();  //读取双端队列的队首元素

de.back();  //读取双端队列的队尾元素

de.push_front(x);  //双端队列队首增加一个元素x

de.push_back(x);  //双端队列尾部增加一个元素x

de.pop_front();  //删除双端队列的队首元素

de.pop_back();  //删除双端队列的队尾元素

de.clear();    //清空双端队列

de.empty();  //判断双端队列是否为空

de.size();   //返回双端队列中元素的个数

*de.begin();  //返回队首元素

*(de.end()-1); //返回队尾元素

deque<Type>::iterator pos;
for(pos=de.begin();pos!=de.end();pos++){//遍历双端队列
cout<<*pos;
}

de.begin(); //返回指向双向队列的队首元素的指针

de.end(); //返回指向双端队列元素队尾元素的下一个位置的指针

 

写于2020/7/31  11:58

增添双端队列于2020/8/6 10:20

增添双端队列中de.front()与de.back()于2020/9/8  20:13

posted @ 2020-07-31 11:59  白菜茄子  阅读(558)  评论(0编辑  收藏  举报