STL queue/priority_queue类模板
队列是一种先入先出(FIFO)的数据结构,数据从一端进入而从另一端移除。实际上queue是把各项操作转化为内部容器的对应调用,可以使用任何序列式容器来支持queue,默认为vector。#include <queue>//包含头文件#include <iostream>using namespace std;//定义queue<int> que1;queue&l
·
- 队列是一种先入先出(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;
}
更多推荐
已为社区贡献2条内容
所有评论(0)