STLqueue(1) | Eternal_zttz

STLqueue(1)

queue

queue 是c++的一个标准库,这个标准库对队列进行了实现。

标准库使用 :

1
2
#include <queue>
using namespace std;

然后再声明需要使用的队列:

1
2
3
queue<int> q;    //代表队列里的元素类型为 int
queue<double> q; //代表队列里的元素类型为 double
queue<string> q; //代表队列里的元素类型为 string

queue库函数:

在这个库中,主要实现了以下函数:

  1. push(): 该函数会将一个函数放入队列中
  2. front(): 该函数会返回queue中的第一个元素,即队首元素
  3. back(): 该函数返回queue中的最后一个元素,即队尾元素
  4. pop(): 该函数移除queue内的第一个元素(队首元素)
  5. size(): 该函数会返回queue内的元素个数
  6. empty(): 该函数在队列为空时返回1,否则为0
  7. swap(): 交换两个队列的值

注意,函数front()back()本身只是访问队列中的元素,并不对该元素作出操作,所以,如果不执行pop()操作,多次访问的值是一样的,不会改变(因为队列并没有改变);

函数使用:

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdio>
#include <queue> //引入头文件
using namespace std;
int main(){
int n = 10;
int a[n];
queue<int> q;//声明一个int型队列
queue<int> q2;
for (int i = 0; i < n; i++){
scanf("%d",&a[i]);
q.push(a[i]);//元素入队
// printf("%d\n",q.back());//访问队尾元素
}
printf("%ld\n",q.size());//队列元素数目
while(!q.empty()){
printf("%d ",q.front());//访问队首元素
q.pop();//队首出队
}
printf("\n");
q.push(1);q.push(2);
q2.push(3);q2.push(4);q2.push(5);
printf("%ld %ld\n",q.size(),q2.size());
swap(q, q2);//交换两个队列的元素
printf("%ld %ld\n",q.size(),q2.size());
}

-------------The End-------------