STL queue/priority_queue类模板

本文深入探讨了队列(queue)与优先级队列(priority_queue)的概念及操作,详细介绍了它们在C++标准库中的实现方式。队列遵循先进先出(FIFO)原则,而优先级队列则根据元素的优先级进行排序。文章涵盖了队列的创建、元素的添加与删除、获取队头队尾元素等操作,并展示了如何自定义排序准则。
  • 队列是一种先入先出(FIFO)的数据结构,数据从一端进入而从另一端移除。
  • 实际上queue是把各项操作转化为内部容器的对应调用,可以使用任何序列式容器来支持queue,默认为vector。
#include <queue>		//包含头文件
#include <iostream>
using namespace std;

	//定义
	queue<int> que1;
	queue<int, list<int>> que2;

	que1.push(1);			//push()将元素压入队尾
	que1.pop();				//pop()从队头弹出元素
	int a = que1.front();	//返回队头的元素
	int b = que1.back();	//返回队尾的元素
	bool c = que1.empty();  //判断容器是否为空
	int d = que1.size();	//返回容器中元素个数
  • 优先级队列(priority_queue)中的元素不是按FIFO的顺序存储在容器中的,而是按优先级进行排序。默认排序准则是小于。
  • priority_queue也把各项操作转化为内部容器的具体调用,可以使用任何序列式容器实现priority_queue,但由于priority_queue用到了STL的heap算法,因而内部容器必须支持随机存取迭代器,如deque。
  • 定义自己的排序准则要传递一个函数或仿函数作为二元判断式。
template <typename T> void outL(priority_queue<T, deque<T>, less<T>>& p)
{
	while(!p.empty())
	{
		cout << p.top() << ",";
		p.pop();
	}
	cout << endl;
}

template <typename T> void outL(priority_queue<T, deque<T>, less<T>>& p)
{
	while(!p.empty())
	{
		cout << p.top() << ",";
		p.pop();
	}
	cout << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值