C++标准模板库(STL)——queue常见用法详解

queue 是 C++ 标准模板库(STL)中的容器适配器,用于实现先进先出(FIFO)的队列数据结构。队列中的元素按照插入的顺序进行排列,并且只能在队列的一端(称为队尾)添加元素,在另一端(称为队首)删除元素。

特点:

  1. 先进先出(FIFO):队列中的元素按照插入的顺序进行排列,最先插入的元素最先被删除。

  2. 只能在两端操作:只能在队列的一端(队尾)添加元素,在另一端(队首)删除元素,即不能在队列的中间位置插入或删除元素。

  3. 动态操作:可以动态地向队列中添加元素,并且可以删除队列中的元素,队列会自动调整元素的位置。

  • queue的定义
queue<typename> name; 
  • queue容器内元素的访问

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

示例:

 #include <iostream>
 #include <queue>
 using namespace std;
 queue<int> q;
 int main()
 {
     for(int i=0;i<5;i++){
         q.push(i+1);    //push将i+1压入队列 
     }
     cout<<q.front()<<" "<<q.back(); 
     return 0;
 }

输出结果:

1 5

  • queue常用函数

  (1)push()

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

  (2)front()、back()

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

  (3)pop()

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

示例:

 #include <iostream>
 #include <queue>
 using namespace std;
 queue<int> q;
 int main()
 {
     for(int i=0;i<5;i++){
         q.push(i+1);    //push将i+1压入队列 
     }
     for(int i=0;i<2;i++){
         q.pop();    //出队2次(1,2出队) 
     }
     cout<<q.front();
     return 0;
 }

输出结果:

3

  (4)empty()

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

示例:

 #include <iostream>
 #include <queue>
 using namespace std;
 queue<int> q;
 int main()
 {
     if(q.empty()==true){    //初始时,队列为空 
         cout<<"empty"<<endl;
     }
     else{
         cout<<"not empty"<<endl;
     }
     q.push(1);    //在入队1后,队列非空 
     if(q.empty()==true){
         cout<<"empty"<<endl;
     }
     else{
         cout<<"not empty"<<endl;
     }
     return 0;
 }

输出结果:

empty

not empty

  (5)size()

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

示例:

 #include <iostream>
 #include <queue>
 using namespace std;
 queue<int> q;
 int main()
 {
     for(int i=0;i<5;i++){
         q.push(i+1);    //push将i+1压入队列 
     }    
     cout<<q.size(); 
     return 0;
 } 

输出结果:

5

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值