queue队列、deque双端队列和priority_queue优先队列
, greater > p; 大顶堆(默认定义):
发布日期:2025-05-05 13:10:19
浏览次数:3
分类:精选文章
本文共 1823 字,大约阅读时间需要 6 分钟。
C++ 数据结构指南:队列、双端队列和优先队列
1. 队列(Queue)
队列是一种先进先出的数据结构(FIFO),常用于处理实时任务或批量处理。以下是队列的主要操作方法:
1.1 size()
- 功能:返回队列中元素的数量。
- 示例:
int size = q.size();
1.2 front()
- 功能:返回队列中第一个元素。
- 示例:
string front = q.front();
1.3 pop()
- 功能:从队列中取出并删除第一个元素。
- 示例:
q.pop();
1.4 push()
- 功能:将一个元素添加到队列的末尾。
- 示例:
q.push("元素");
1.5 empty()
- 功能:判断队列是否为空,返回
true或false。 - 示例:
bool empty = q.empty();
2. 双端队列(Deque)
双端队列(Deque)是一种既可以从前面(front)也可以从后面(back)添加和删除元素的队列。它比普通队列更灵活,适合多个操作场景。
2.1 push_back()
- 功能:从队列的末尾添加一个元素。
- 示例:
q.push_back("元素");
2.2 push_front()
- 功能:从队列的开头添加一个元素。
- 示例:
q.push_front("元素");
2.3 pop_back()
- 功能:从队列的末尾删除一个元素。
- 示例:
q.pop_back();
2.4 pop_front()
- 功能:从队列的开头删除一个元素。
- 示例:
q.pop_front();
2.5 size()
- 功能:返回队列中元素的数量。
- 示例:
int size = q.size();
2.6 at(idx)
- 功能:返回队列中指定索引位置的元素。
- 示例:
string element = q.at(2);
2.7 insert(pos, elem)
- 功能:在指定位置插入一个元素的拷贝。
- 示例:
int pos = q.insert(q.end(), "元素");
2.8 erase(pos)
- 功能:删除指定位置的元素,并返回下一个元素的位置。
- 示例:
int new_pos = q.erase(q.begin() + 2);
2.9 erase(begin, end)
- 功能:删除指定区间内的元素。
- 示例:
q.erase(q.begin(), q.begin() + 3);
2.10 clear()
- 功能:删除队列中所有元素。
- 示例:
q.clear();
3. 优先队列(Priority Queue)
优先队列是一种基于堆的数据结构,能够快速获取最大的元素(大顶堆,默认定义)或最小的元素(小顶堆,需要指定比较器)。
3.1 队列定义
- 小顶堆:
priority_queue
priority_queue q;
3.2 常用操作
- size():返回队列中元素的数量。
- front():返回队列中第一个(最大)元素。
- pop():从队列中取出并删除最大的元素。
- push():将一个元素添加到队列中。
4. 简单实例
#include#include #include using namespace std;int main() { queue Q; Q.push("红"); Q.push("黄"); Q.push("黄"); Q.push("蓝"); cout << Q.front() << " "; // 输出队列头元素:红 Q.pop(); Q.pop(); cout << Q.size() << " "; // 输出队列中的元素数:2 Q.push("绿"); // 如果是栈,输出将是黄,但队列是FIFO cout << Q.front() << " "; // 输出队列头元素:黄 return 0;}
运行结果:
红 黄2黄
以上内容完整涵盖了队列、双端队列和优先队列的核心操作方法,供开发者参考使用。
发表评论
最新留言
不错!
[***.144.177.141]2026年05月29日 13时02分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP四大主流框架的优缺点总结
2023-03-01
PHP图片处理—PNG透明缩放并生成灰图
2023-03-01
php在liunx系统中设置777权限不起作用解决方法
2023-03-01
PHP基于openssl实现的非对称加密操作
2023-03-01
php基本符号大全
2023-03-01
php基础篇-二维数组排序 array_multisort
2023-03-01
php增删改查封装方法
2023-03-01
php多条件筛选功能的实现
2023-03-01
php多线程
2023-03-01
PHP大数组循环-避免产生Notice或者是Warning
2023-03-01
PHP大数组过滤元素、修改元素性能分析
2023-03-01
PHP大文件切片下载代码
2023-03-01
php如何做表格,新手怎么制作表格
2023-03-01
RabbitMQ集群 - 普通集群搭建、宕机情况
2023-03-01
php如何正确的获得文件的后缀名
2023-03-01
PHP如何生成唯一的数字ID
2023-03-01
PHP如何获取当前页面的最后修改时间
2023-03-01
PHP如何读取json数据
2023-03-01
PHP字符串
2023-03-01