C++标准模板库 队列容器的使用

news2025/4/20 8:12:45

队列:在数据结构中也成为操作受限的线性表,是一种只允许在表的一端插入,在另一端删除的线性表

特点:先进先出,像打饭《排在最前面的先买,后到的排在队尾,即删除在队头,插入在队尾》

队列的基本操作

QueueIn(Q,x);//入队
QueueOut(Q);//出队

push(x)//x入队,即将x插入到队尾

front(),back()//获得队首元素和队尾元素

 pop()//令队首元素出队

 empty()//检测队列queue是否为空,返回true为空,返回false为非空

 size()//元素个数

注意:使用front()函数和back()函数前,必须用empty()判断队列是否为空,否则会因为队空而出现错误 


以上都是队列最基本的知识,下面和我一起来做一下经典的题吧

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int m,n,k,t1,t2,i;
    cin>>m>>n>>k;
    queue<int >man;
    for(i=1;i<=m;i++)
    man.push(i);
    queue<int >woman;
    for(i=1;i<=n;i++)
    woman.push(i);
    for(i=1;i<=k;i++)
    {
        t1=man.front();
        man.pop();
        cout<<t1<<" ";
        man.push(t1);
        t2=woman.front();
        woman.pop();
        cout<<t2<<endl;
        woman.push(t2);
    }
    return 0;
}

 经典队列题,必会


#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n,m,i,k,num=0;
    cin>>n>>m;
    queue<int >q;
    for(i=1;i<=n;i++)
    q.push(i);
    while(q.size()>1)
    {
        k=q.front();
        num++;
        if(num==m)
        {
            q.pop();
            num=0;
        }
        else
        {
            q.pop();
            q.push(k);
        }
    }
    cout<<q.front()<<endl;
    return 0;
}

map容器内元素的访问

1.下标访问

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    map<char,int>mp;
    mp['c']=20;
    mp['c']=30;
    printf("%d\n",mp['c']);
    return 0;
}

2.通过迭代器访问

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    map<char,int>mp;
    map<char,int>::iterator it;
    mp['d']=20;
    mp['c']=30;
    mp['a']=20;
    for(it=mp.begin();it!=mp.end();it++)
    printf("%c %d\n",it->first,it->second);
    return 0;
}

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string ch,ans1,t;
    int i,n,ans;
    map<string,int>vis;
    map<string,int>::iterator it;
    while(cin>>n&&n!=0){
        ans=-999;
        vis.clear();
    for(i=1;i<=n;i++)
    {
        ans=-9999;
        cin>>ch;
        vis[ch]++;
    }
    for(it=vis.begin();it!=vis.end();it++)
    {
        t=(*it).first;
        if(ans<vis[t])
        {
            ans=vis[t];
            ans1=t;
        }
    }
    cout<<ans1<<endl;
    }
    return 0;
}

 pair的用法,可以通过pair给map赋值

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    map<string,int>mp;
    map<string,int>::iterator it;
    pair<string,int>p;
    string sa;
    int x,i;
    for(i=1;i<=5;i++)
    {
        cin>>sa;
        cin>>x;
        p=make_pair(sa,x);
        mp.insert(p);

    }
    for(it=mp.begin();it!=mp.end();it++)
    cout<<it->first<<" "<<it->second<<"\n";
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/613161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试测试工程师,都要考察什么?

今年刚接触了&#xff08;功能&#xff09;测试工程师的面试工作&#xff0c;有遇到对信贷业务流程较熟悉的、工作内容纯测试app功能的、什么都接触过但是不够深入的&#xff0c;发现简历上写的东西和实际真的有点差距&#xff0c;面试也是一个艺术活。 如果你想学习自动化测试…

Security Onion(安全洋葱)开源入侵检测系统(ids)安装

文章目录 Security Onion介绍安装配置&#xff08;最低&#xff09;安装步骤web界面 Security Onion介绍 Security Onion是一款专为入侵检测和NSM(网络安全监控)设计的Linux发行版。其安装过程很简单&#xff0c;在短时间内就可以部署一套完整的NSM收集、检测和分析的套件。Se…

高完整性系统(6)Alloy核心语法 + 有限状态机(Finite State Machines);check assertion amination

文章目录 Alloy 核心内容sig数据类型varonefactpre-conditionfunpred 谓词谓词的构成谓词的结果 / 普通条件约束和 pre-post condition 的区别 Finite State Machines 有限状态机FSM in Alloy Check Specification动画&#xff08;Animation&#xff09;&#xff1a;run 关键字…

安装superset并连接clickhouse

说明&#xff1a; Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数据分析引擎&#xff0c;拥有丰富的图表展示形式&#xff0c;并且支持自定义仪表盘。 使用的服务器操作系统为CentOS 7&a…

路径规划算法:基于天牛须优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于天牛须优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于天牛须优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

【数据结构与算法篇】深入浅出——二叉树(详解)

​&#x1f47b;内容专栏&#xff1a;《数据结构与算法专栏》 &#x1f428;本文概括&#xff1a; 二叉树是一种常见的数据结构&#xff0c;它在计算机科学中广泛应用。本博客将介绍什么是二叉树、二叉树的顺序与链式结构以及它的基本操作&#xff0c;帮助读者理解和运用这一重…

微信开发框架WxJava之微信公众号开发的入门使用篇

微信开发框架WxJava之微信公众号开发的入门使用篇 WxJava介绍微信公众号申请测试公众号测试公众号配置 WxJava微信公众号开发添加依赖配置微信参数实例化WxMpService对接微信公众号回调接收与回复消息 微信消息路由器WxMpMessageHandlerWxMessageInterceptor自定义Handle自定义…

Vue.js devtools运行但调试窗口未出现的解决方案

Vue.js devtools是一款基于Chrome浏览器的调试Vue.js应用的扩展程序。然而&#xff0c;有时即使该插件已经在运行&#xff0c;调试窗口也可能未出现。这主要可能有以下几个原因&#xff0c;并附有相应的解决方法&#xff1a; 1. Chrome扩展程序选项的问题 首先&#xff0c;右上…

关于数据挖掘的问题之经典案例

依据交易数据集 basket_data.csv挖掘数据中购买行为中的关联规则。 问题分析&#xff1a; 如和去对一个数据集进行关联规则挖掘&#xff0c;找到数据集中的项集之间的关联性。 处理步骤&#xff1a; 首先导入了两个库&#xff0c;pandas 库和 apyori 库。pandas 库是 Pytho…

二叉树基础知识力扣题构造二叉树总结

二叉树 如何理解二叉树&#xff0c;This is a question! 作者在去年被布置要求学习二叉树时对二叉树的理解并不是很深刻&#xff0c;甚至可以说是绕道走&#xff0c;但是Luck of the draw only draws the unlucky&#xff0c;在学期初考核时&#xff0c;作者三道二叉树题都没…

ArrayBlockingQueue中方法的基本使用

生产者生产数据 使用add()方法向队列中添加元素&#xff0c;在队列满的时候会抛出异常。 ArrayBlockingQueue是基于数组实现&#xff0c;初始化完成后长度是不可变的&#xff0c;在其构造方法中也都是有参构造&#xff0c;初始化对象时必须指定当前队列的长度。 使用offer()方…

day05——K-近邻算法

K-近邻算法 一、定义二、API三、实操&#xff1a;预测签到位置1&#xff0c;数据获取2&#xff0c;数据基本处理3&#xff0c;预测算法代码 四、调优1&#xff0c;什么是交叉验证2&#xff0c;超参数搜索-网格搜索(Grid Search)3&#xff0c;调优代码 五、KNN 算法总结 一、定义…

网工内推 | 应届生网工专场,最高15薪,有NP以上证书优先

01 智己汽车 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;职责描述&#xff1a; 1.管理和运维支持网络基础设备&#xff08;防火墙&#xff0c;交换机&#xff0c;路由器&#xff0c;负载均衡、无线、准入等&#xff09;&#xff1b; 2.负责公司OA网络及公有云…

类和对象以及数组工具类的常用方法

文章目录 一、类和对象二、数组工具类的常用方法 一、类和对象 1、对象没人引用时&#xff0c;会被自动回收 2、对象一定在堆上&#xff0c;引用变量不一定在栈上 3、this表示当前对象的引用&#xff0c;谁调用eat方法(eat方法里有this)&#xff0c;谁就是this。this.data访问…

C++11 使用using定义别名(替代typedef)::作用域运算符

typedef 一切合法的变量的定义可以转换为类型 typedef unsigned int uint_t;示例如下&#xff1a; 使用 typedef 重定义类型是很方便的&#xff0c;但它也有一些限制&#xff0c;比如&#xff0c;无法重定义一个模板。 现在&#xff0c;在 C11 中终于出现了可以重定义一个模…

Kerberos从入门到精通以及案例实操系列(一)

1、Kerberos部署 1.1、Kerberos概述 1.1.1、什么是Kerberos Kerberos是一种计算机网络认证协议&#xff0c;用来在非安全网络中&#xff0c;对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构&a…

STC89C52+DS18B20实现环境温度检测(数码管显示温度)

一、项目介绍 温度检测是工业自动化、生产线等众多领域中常见的应用场景之一,能及时准确地监测温度对于保障生产安全和提高生产效率有着非常重要的作用。而在现代的电子制造行业中,使用单片机和传感器等电子元器件进行温度检测已经成为了一个比较成熟的技术方案。 本项目选…

Qcom_hexagon编译自动获取目录和特定文件的方法

一&#xff0c;简介 本文主要介绍&#xff0c;如何在高通hexagon ide中的hexagon.min中添加获取目录和.c文件的方法&#xff0c;供参考。 二&#xff0c;具体命令 OBJ_PATH : ./awinic_sp_module/algo_libINCLUDE_PATH : $(shell find $(OBJ_PATH ) -type d) SRC_C_FILE : …

synchronized 的底层原理

tip: 作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 文章目录 一、synchronized 的底层原理二、synchronized 的锁升级原理1、偏向锁2、轻量级锁3、重量级锁 一…

大幅提升iOS编译速度的cocoapods二进制化插件介绍

1. 背景 驾校一点通iOS项目是采用是cocoapods来管理组件的&#xff0c;又经过多年的组件化发展&#xff0c;目前组件已经达到了120的数量。在这种组件规模下&#xff0c;主工程的打包时间也从最开始的几分钟增加到十几分钟&#xff08;M1&#xff09;、二十几分钟&#xff08;…