150723培训心得(queue)

本文详细介绍了C++ STL中的队列(queue)数据结构及其基本操作,包括如何定义、初始化、入队、出队、获取队首及队尾元素等,并通过实例展示了其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

queue(STL中函数,就是指队列)


#include <iostream>
#include <queue>
using namespace std;        //这几个头文件不可缺少


int main()
{
queue<类型(如int)> q; //使用前需定义一个queue变量,且定义时已经初始化
while(!q.empty()) q.pop(); //反复使用时,用这个初始化(空则返回1,不空返回0)
q.push(1); //进队列
q.pop(); //出队列
int v=q.front(); //得到队首的值
int s=q.size(); //得到队列里元素个数
return 0;

}


其他概述:
使用queue之前,要先利用构造函数一个队列对象,才干够进行元素的入队。出队,取队首和队尾等操作;
(1)queue() queue<int>q; 或者 queue<int>Q[10000];
(2)queue(const queue&) 复制构造函数 
    比如:用一行代码利用queue对象q1,创建一个以双向链表为底层容器的queue对象q2
    queue<int,list<int>>q1;queue<int,list<int>>q2(q1);
(3)元素入队        函数为:push()比如:q.push(3),意思是将3入队 ,注意队列的大小不预设
(4)元素出队        函数为:pop()比如:q.pop()
(5)取对头元素      函数为:front()
(6)取队尾元素      函数为:back()
(7)推断对空        函数为:empty()

(8)队列的大小      函数为:size()返回队列的当前元素的个数


代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
using namespace std;
int sta[110000];
int map[110000][3];
int ans[110000];
int main()
{
	int m;
	int n,s;
	int i,j,k;
	int now;
	queue<int>q;//定义int型队列q
	scanf("%d",&m);
	while(m--)
	{
		scanf("%d%d",&n,&s);
		q.push(s);//将s入队
		for(i=1;i<n;i++)
		{
			map[i][0]=1;
		    scanf("%d%d",&map[i][1],&map[i][2]);
		}
		memset(ans,0,sizeof(ans));
		ans[s]=-1;
		while(!q.empty())//q.empty()推断是否队空,空则返回1。不空则返回0
		{
			now=q.front();//取队首数据
			q.pop();//出队
			for(i=1;i<n;i++)
			{
				if(map[i][0]&&map[i][1]==now)
				{
				    q.push(map[i][2]);
				    ans[map[i][2]]=now;
				    map[i][0]=0;
				}
				else if(map[i][0]&&map[i][2]==now)
				{
				    q.push(map[i][1]);
				    ans[map[i][1]]=now;
				    map[i][0]=0;
				}
			}
		}
		for(i=1;i<=n;i++)
		{
			printf("%d",ans[i]);
			if(i!=n)
			    printf(" ");
			else
			    printf("\n");
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值