标准模板库(STL)是程序员定义的数据类型和算法的集合,可供 C++ 程序使用。这些数据类型和算法不是 C++ 语言的一部分,但它们的创建是对内置数据类型的有益补充。如果打算继续在计算机科学领域学习,那么就应该熟悉 STL。本节介绍 STL 数据类型之一:队列(queue)。
  • queue的定义
queue<typename> name; 
  • queue容器内元素的访问

  由于队列本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。

示例:

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 queue<int> q;
 5 int main()
 6 {
 7     for(int i=0;i<5;i++){
 8         q.push(i+1);    //push将i+1压入队列 
 9     }
10     cout<<q.front()<<" "<<q.back(); 
11     return 0;
12 }
输出结果:
1 5
  • queue常用函数

  (1)push()

  push(x)将x进入队列,时间复杂度为O(1)。

  (2)front()、back()

  front()和back()可以分别获得队首元素和队尾元素,时间复杂度为O(1)。

  (3)pop()

  pop()令队首元素出队,时间复杂度为O(1)。

示例:

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 queue<int> q;
 5 int main()
 6 {
 7     for(int i=0;i<5;i++){
 8         q.push(i+1);    //push将i+1压入队列 
 9     }
10     for(int i=0;i<2;i++){
11         q.pop();    //出队2次(1,2出队) 
12     }
13     cout<<q.front();
14     return 0;
15 }
输出结果:
3

  (4)empty()

  empty()检测queue是否为空,返回true为空,返回false为非空。时间复杂度为O(1)。

示例:

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 queue<int> q;
 5 int main()
 6 {
 7     if(q.empty()==true){    //初始时,队列为空 
 8         cout<<"empty"<<endl;
 9     }
10     else{
11         cout<<"not empty"<<endl;
12     }
13     q.push(1);    //在入队1后,队列非空 
14     if(q.empty()==true){
15         cout<<"empty"<<endl;
16     }
17     else{
18         cout<<"not empty"<<endl;
19     }
20     return 0;
21 }
输出结果:
empty
not empty

  (5)size()

  size()返回queue内元素的个数,时间复杂度为O(1)。

示例:

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 queue<int> q;
 5 int main()
 6 {
 7     for(int i=0;i<5;i++){
 8         q.push(i+1);    //push将i+1压入队列 
 9     }    
10     cout<<q.size(); 
11     return 0;
12 }  
输出结果:
5

 

版权声明:本文为cocktail原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cocktail/p/14866867.html