queue的常见用法

queue的定义

queue:队列,实现了一个先进先出的容器,需添加头文件#include
queue name;

queue容器内元素的访问

由于队列本身就是一种先进先出的限制性数据结构,只能通过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); // push(i)用以将i压入队列,因此依次入队1 2 3 4 5
    }
    printf("%d %d\n", q.front(), q.back()); // 输出结果是1 5
    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 <stdio.h>
#include <queue>
using namespace std;
int main()
{
    queue<int> q;
    for(int i = 1; i <= 5; i++)
    {
        q.push(i); // push(i)用以将i压入队列,因此依次入队1 2 3 4 5
    }
    for(int i = 1; i <= 3; i++)
    {
        q.pop(); //出队首元素三次(即依次出队1 2 3)
    }
    printf("%d\n", q.front());
    return 0;
}
4

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

#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) //在入队“1”后,队列非空
    {
        printf("Empty\n");
    }
    else
    {
        printf("Not Empty\n");
    }
    return 0;
}
Empty
Not Empty

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

#include <stdio.h>
#include <queue>
using namespace std;
int main()
{
    queue<int> q;
    for(int i = 1; i <= 5; i++)
    {
        q.push(i); // push(i)用以将i压入队列
    }
    printf("%d\n", q.size()); // 队列中有5个元素
    return 0;
}
5

queue的常见用途

当需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用queue作为代替,以提高程序的准确性。
另外有一点注意,使用front()和pop()函数前,必须用empty()判断队列是否为空,否则可能因为队空而出现错误。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光开朗男孩

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值