C++队列操作

STL 队列 queue 类成员函数如下:

back():返回最后一个元素
front():返回第一个元素
pop():删除第一个元素,void类型函数,没有返回值,头指针向后移动
push():在末尾加入一个元素,尾指针向后移动
empty():如果队列为空,则返回1,否则返回0,返回值为bool
size():返回队列中元素的个数,返回值类型为unsigned int
由于没有clear()方法,可以通过赋空队列queue< datatype >()的方法清空一个队列

在这里插入图片描述


#include<iostream>
#include<queue>

using namespace std;

int main(){
    queue<int> q;
    q.push(111); 
    q.push(222);
    cout<<"队列大小:"<<q.size()<<endl;
    cout<<"队首地址"<<&(q.front())<<endl;
    cout<<"队尾地址"<<&(q.back())<<endl;
    q.pop();
    cout<<"移除111后"<<endl;
    cout<<"队列空吗?"<<q.empty()<<endl;
    cout<<"队首地址"<<&(q.front())<<endl;
    cout<<"队尾地址"<<&(q.back())<<endl;
    //检查删除操作是否只是头指针移动,而元素还在
    if(*(&(q.front())-1) != 111){
        cout<<"已经移除111"<<endl;
    }else{
        cout<<*(&(q.front())-1)<<endl;
    }
    q.pop();
    cout<<"移除222后"<<endl;
    cout<<"队列空吗?"<<q.empty()<<endl;
    cout<<"队首地址"<<&(q.front())<<endl;
    cout<<"队尾地址"<<&(q.back())<<endl;
    return 0;
}


在这里插入图片描述
由运行结果可知,删除操作执行后只是头指针front移动,而内存地址中的元素111还在,依然可以访问到。
当队列中只剩一个元素时,front指针和back指针指向同一内存空间。
当empty()返回1时,表示队列已经没有元素了,front指针在back指针后面。

遍历队列

#include<iostream>
#include<queue>

using namespace std;

int main(){
    queue<int> q;
    q.push(111); 
    q.push(222);
    q.push(333); 
    q.push(444);
    q.push(555);
    //由于queue没有支持的遍历元素的方法,没有迭代器
    //故先记下头指针的地址,在往后遍历即可
    for(int i=0; i<q.size(); i++){
        cout<<*(&(q.front())+i)<<" ";
    }
    return 0;
}

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bugcoder-9905

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值