目录
queue的定义
其定义的写法和其他STL容器相同,typename可以是任意基本数据类型或容器:
queue<typename> name;
queue容器内元素的访问
由于队列本身就是一种先进先出的限制性数据结果,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。
#include<stdio.h>
#include<queue>
using namespace std;
int main(){
queue<int> q;
for(int i=1;i<=5;i++){
q.push(i);
}
printf("%d %d\n",q.front(),q.back());
return 0;
}
queue常用函数实例解析
(1)push()
push(x)将x进行入队,时间复杂度为
(2)front()、back()
front()和back()可以分别获得队首元素和队尾元素,时间复杂度为
(3)pop()
pop()令队首元素出队,时间复杂度为
#include<stdio.h>
#include<queue>
using namespace std;
int main(){
queue<int> q;
for(int i=1;i<=5;i++){
q.push(i);
}
for(int i=1;i<=3;i++){
q.pop();
}
printf("%d\n",q.front());
return 0;
}
输出结果
4
(4)empty()
empty()检测queue是否为空,返回true则空,返回false则非空。时间复杂度为
#include<stdio.h>
#include<queue>
using namespace std;
int main(){
queue<int> q;
if(q.empty()==true){
printf("Empty\n");
}
else{
printf("Not Empty\n");
}
q.push(1);
if(q.empty()==true){
printf("Empty\n");
}
else{
printf("Not Empty\n");
}
return 0;
}
输出结果
Empty
Not Empty
(5)size()
size()返回queue内元素的个数,时间复杂度为
#include<stdio.h>
#include<queue>
using namespace std;
int main(){
queue<int> q;
for(int i=1;i<=5;i++){
q.push(i);
}
printf("%d\n",q.size());
return 0;
}
queue的常见用途
当需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用queue作为代替。
另外有一点注意的是,使用front()和pop()函数前,必须用empty()判断队列是否为空。否则可能因为队空而出现错误。