队列(queue)在c++中是一种线性的基础数据结构,它的操作受算法的限制.队列就好比生活当中的排队,不考虑插队的情况下你总是先进入队列的先离开,后进入队列的就后离开.所以队列每次只能取队首的值,每次只能从队尾加入数据.
关于队列的基本操作:
1.入队(push);
2.出队(pop);
3.判断队列是否为空(empty);
4.统计队列元素的个数(size);
5.访问队首元素(front);
使用队列,首先要引入库.队列的头文件就是队列的英文:queue.所以在代码最前面写上:
#include <queue>
using namespace std;
int main(){
return 0;
}
构造队列的语句为:queue<T> ...;于是我们再加入定义队列的语句:
#include <queue>
using namespace std;
int main(){
queue<int> q;
return 0;
}
于是我们就定义好了一个整数类型的名字为q的队列.接下来我们再用push函数往内 添加元素:
#include <queue>
using namespace std;
int main(){
queue<int> q;
q.push(5);
q.push(2);
q.push(0);
return 0;
}
这样子就塞了个520进去~.接下来我们访问队首元素:
#include <queue>
#include <iostream>
using namespace std;
int main(){
queue<int> q;
q.push(5);
cout << q.front() << endl;
q.push(2);
cout << q.front() << endl;
q.push(0);
cout << q.front() << endl;
return 0;
}
由于队列是向队尾加元素,所以会得到555而不是520.下面再看看判断队列是否为空的操作:
#include <queue>
#include <iostream>
using namespace std;
int main(){
queue<int> q;
cout << (q.empty() ? "yes" : "no") << endl;
q.push(4);
cout << (q.empty() ? "yes" : "no") << endl;
return 0;
}
那么如何使队首元素出列呢?
#include <queue>
#include <iostream>
using namespace std;
int main(){
queue<int> q;
q.push(5);
q.push(2);
q.push(0);
while(!q.empty()){
cout << q.front() << endl;
q.pop();
}
return 0;
}
电脑终于说出了520~.至于统计元素个数:
#include <queue>
#include <iostream>
using namespace std;
int main(){
queue<int> q;
q.push(5);
q.push(2);
q.push(0);
cout << q.size() << endl;
return 0;
}
对于队列的操作就到此结束了.
其实queue的头文件中根据一些特殊问题还定义了一种数据结构:优先队列.即默认让大的先出队,小的排前面.定义优先队列时需要三个参数:元素类型,容器类型和比较算子.
定义一个较大数先出队的队列:
priority_queue<int, vector<int>, less<int> > q;
定义一个较小数先出队的队列:
priority_queue<int, vector<int>, greater<int> > q;