admin管理员组文章数量:1623799
目录
1、queue有关函数的作用
2、priority_queue 有关函数作用
3、queue 测试用例
4、priority_queue 测试用例
至于队列的结构与原理(FIFO,先入先出)这里就不细说了,这里主要记录下 C++ 的头文件 <queue> 中有关队列的操作是如何使用的:
queue 就是普通的队列,遵循先入先出的原则。
priority_queue 是优先队列,默认是值最大(优先级最高)的元素先出队列,也可以通过设置相关参数使得值最小的元素先出队列。
1、queue有关函数的作用
queue<type> q; | 定义一个参数类型为 type 的队列 |
q.push(val) | 元素入队,无返回值 |
q.emplace(val) | 原地创建一个元素入队,类似push |
q.front() | 返回队首元素,且该元素不出列 |
q.pop() | 队首元素出队,不返回元素,无返回值 |
q.back() | 返回队尾元素,且该元素不出列 |
q.empty() | 判断队是否为空,是返回 true |
q.size() | 返回队中元素数量 |
q.swap(q2) | q 与队列 q2 交换内容 |
2、priority_queue 有关函数作用
priority_queue<type> q; | 定义一个参数类型为 type 的优先队列 |
q.push(val) | 元素入队,无返回值 |
q.emplace(val) | 原地创建一个元素入队,类似push |
q.top() | 返回队首(默认值最大)元素,且该元素不出列 |
q.pop() | 队首元素出队,不返回元素,无返回值 |
q.empty() | 判断队是否为空,是返回 true |
q.size() | 返回队中元素数量 |
q.swap(q2) | q 与优先队列 q2 交换内容 |
注意获取对手元素值的方式不一样,queue 是使用 front 方法,而 priority 是使用 top 方法。
3、queue 测试用例
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> myQueue;
myQueue.push(1); // 入队
myQueue.push(2);
myQueue.push(3);
int num = myQueue.size(); // 队列大小
cout << "size: " << num << endl;
for (int i = 0; !myQueue.empty(); i++) // 队列是否为空
{
cout << "head: " << myQueue.front() << endl; // 返回队首元素
cout << "tail: " << myQueue.back() << endl; // 返回队尾元素
myQueue.pop(); // 队首元素出队
}
return 0;
}
// 运行结果 //
size: 3
head: 1
tail: 3
head: 2
tail: 3
head: 3
tail: 3
4、priority_queue 测试用例
#include <queue>
#include <iostream>
using namespace std;
int main()
{
priority_queue<int> q; // 等效于 priority_queue<int, vector<int>, less<int>> q;
q.push(1);
q.push(2);
q.push(10);
q.push(3);
cout << q.top() << endl; // 输出:10
q.pop();
cout << q.top() << endl; // 输出:3
return 0;
}
如果想让 priority_queue 优先弹出最小值的话,可以传入 greater<int> 参数:
。。。。。。
int main()
{
priority_queue<int, vector<int>, greater<int>> q;
q.push(1);
q.push(2);
q.push(10);
q.push(3);
cout << q.top() << endl; // 输出:1
q.pop();
cout << q.top() << endl; // 输出:2
return 0;
}
本文标签: 队列Queuepriorityqueue
版权声明:本文标题:C++ 队列(queue、priority_queue)使用简述 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728895896a1178401.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论