C++中的queue容器

1.

queue是一种先进先出的数据结构,它只允许从一端插入元素,从另一端弹出元素,这两个过程被称为入队和出队,就像我们到火车站卖票窗口买票一样,只能排在队伍后面,队伍最前面的人买了从队伍最前面离开,新来买票的只能排在队伍最后面直到前面的人都离开了队伍才能轮到他。所以queue容器总结有以下特征:

  • queue容器只允许从一端新增元素,从另外一端移除元素。
  • queue中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为。
  • 队列中进数据叫入队push()。
  • 队列中出数据叫出队pop()。
  • 判断队列是否为空empty()。

queue的构造函数:
第一种是默认构造

queue <T> q;

第二种是拷贝构造

queue <T> q(const queue &tmp);

赋值操作

queue& operator=(const queue &tmp);

常用到的方法:

push	//向队尾插入元素,入队
pop		//从对头弹出元素,出队
back	//返回队尾元素
front 	//返回队头元素
empty	//判断队列是否为空 1:空 0:不为空
size	//返回队列大小

代码例子:

#include <iostream>
#include <queue>
#include <algorithm>

using namespace std;

class Person{

public:
	Person(const string &nam,int ag);
	string name;
	int age;
};

Person::Person(const string &nam,int ag)
{
	this->name = nam;
	this->age = ag;
}

void test01(void)
{
	queue<Person> q;

	Person p1("唐僧",30);
	Person p2("八戒",30);
	Person p3("沙僧",30);
	Person p4("悟空",30);

	q.push(p1);
	q.push(p2);
	q.push(p3);
	q.push(p4);

	cout << "q queue size:" << q.size()<<endl;

	queue <Person> q2(q);
	cout << "q2 queue size:" << q2.size()<<endl;

	queue <Person> q3 = q;
	cout << "q3 queue size:" << q3.size()<<endl;
	
	cout << "q: --------------------------------------------------------------------"<<endl;
	while(!q.empty())
	{
		cout << "queue head:" << q.front().name << " " << q.front().age << endl;   
		cout << "queue tail:" << q.back().name << " " << q.back().age << endl; 
		q.pop();//
	}
	cout << "q queue size:" << q.size()<<endl;
	
	cout << "q2: -------------------------------------------------------------------"<<endl;
	while(!q2.empty())
	{
		cout << "queue head:" << q2.front().name << " " << q2.front().age << endl;   
		cout << "queue tail:" << q2.back().name << " " << q2.back().age << endl; 
		q2.pop();//
	}
	cout << "q2 queue size:" << q2.size()<<endl;

	
	cout << "q3: --------------------------------------------------------------------"<<endl;
	while(!q3.empty())
	{
		cout << "queue head:" << q3.front().name << " " << q3.front().age << endl;   
		cout << "queue tail:" << q3.back().name << " " << q3.back().age << endl; 
		q3.pop();//
	}
	cout << "q3 queue size:" << q3.size()<<endl;
}

int  main(void)
{
	test01();
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值