STL---queue队列

本文详细介绍了队列(queue)和优先队列(priority_queue)这两种数据结构的特点和操作方法。队列遵循先进先出原则,可在队尾插入元素,在队首删除元素;而优先队列则始终保持最大元素在队首。文章还提供了使用示例,包括如何遍历队列以及自定义优先队列的优先级。

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

队列也是一种逻辑数据结构,其具有先进先出的特性,只能在队的前端进行删除, 在队的后端进行插入。针对这种特性,可以实现一些较为复杂的逻辑。和stack一样,queue不能创建迭代器对象来遍历。因为stack是先进后出,queue是先进先出,**为了不影响这种结构,因此不能通过迭代器进行遍历。但是可以使用普通for循环将队列中每个元素依次pop和front出来达到遍历的目的。**例:

for (int j = 0; j < n; j++)
	{
		e = q1.front();//q1为queue
		cout << e << " ";
		q1.pop();
	}

priority_queue优先队列

  1. 要求队列中最大的元素位于队列首部。依次递减。
  2. 当优先队列的类型为类或结构体时,可以自定义优先队列的优先顺序,通过重载<运算符。
struct info
{
	string name;
	float score;
	//重载<运算符
	bool operator<(const info& a) const {
		return a.score > score;
	}
};

priority_queue <info> pq;
	info in;
	in.name = "Jack";
	in.score = 68.5;
	pq.push(in);
	in.name = "Bomi";
	in.score = 18.5;
	pq.push(in);
	in.name = "Peti";
	in.score = 90;
	pq.push(in);
	while (!pq.empty()
	{
	//遍历首部元素方法
		cout << pq.top().name << ": " << pq.top().score << endl;
		pq.pop();
	}


普通队列queue基本操作

queue入队,如例:q.push(x); 将x 接到队列的末端。
queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
队列没有迭代器,所以没有begin,end等

优先队列不能使用front读取,优先队列不能使用back读取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值