当前位置: 首页 > wzjs >正文

网站的布局有哪些价格划算的做pc端网站

网站的布局有哪些,价格划算的做pc端网站,公司网站年费怎么做会计分录,手机必备app一、容器概述 priority_queue 是C标准库中的容器适配器&#xff0c;实现基于堆结构的优先队列。元素按优先级顺序出队&#xff0c;默认以降序排列&#xff08;大顶堆&#xff09;。 二、模板参数解析 模板声明&#xff1a; template <class T, class Container vector&…

一、容器概述

priority_queue 是C++标准库中的容器适配器,实现基于堆结构的优先队列。元素按优先级顺序出队,默认以降序排列(大顶堆)。

二、模板参数解析

模板声明:

template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type>>

1. 类型参数

  • T:存储元素的类型
  • Container:底层容器类型(必须满足SequenceContainer要求)
  • Compare:比较函数对象类型(默认less

2. 容器适配器要求

底层容器必须提供以下功能:

  • front()
  • push_back()
  • pop_back()
  • 随机访问迭代器(因此list不兼容)

3. 有效容器类型

priority_queue<int> // 默认vector
priority_queue<int, deque<int>> // 使用双端队列
priority_queue<int, vector<int>, greater<int>> // 显式指定比较器

三、比较函数解析

1. 比较器类型

比较器优先级规则堆类型
less<T>值越大优先级越高大顶堆
greater<T>值越小优先级越高小顶堆

2. 比较器工作原理

// 伪代码示例
if (Compare(element1, element2)) {// 当element1应该排在element2下方时返回true
}

四、常用操作

1. 元素访问

  • top():返回优先级最高的元素(时间复杂度O(1))

2. 容量操作

  • empty():判断队列是否为空
  • size():返回元素数量

3. 修改器

  • push(val):插入元素(O(logN))
  • emplace(args):原地构造元素
  • pop():删除堆顶元素(O(logN))

五、关键特性

  1. 不提供迭代器访问:只能访问堆顶元素
  2. 自动排序特性:每次push/pop自动维护堆结构
  3. 容器限制:底层容器必须支持随机访问和快速尾部操作

六、示例代码分析

1. 默认构造方式

priority_queue<int> pq; // 默认使用vector,大数优先

2. 指定比较器

priority_queue<int, vector<int>, greater<int>> pq; // 小数优先

3. 错误示例

priority_queue<int, list<int>> pq; // 编译错误!list不支持随机访问

七、完整代码回顾

#include <iostream>
#include <queue>
#include <deque>
#include <vector>
#include <list>using namespace std;int main(void) {//priority_queue<int> pqA;	// 默认情况(less) 值越大,优先级越大//priority_queue<int, vector<int>, greater<int>> pqA;	// 使用vector ,值越小,优先级越大priority_queue<int, deque<int>, greater<int>> pqA;	// 使用deque  ,值越小,优先级越大//priority_queue<int, list<int>, greater<int>> pqA;		// 不能使用list,不兼容pqA.push(1);pqA.push(2);pqA.push(3);pqA.push(4);pqA.push(5);while (!pqA.empty()) {cout << pqA.top() << " ";pqA.pop();}system("pause");return 0;
}

八、运行结果说明

当使用greater<int>比较器时:

1 2 3 4 5

若使用默认less<int>

5 4 3 2 1

九、使用注意事项

  1. 优先选择vector作为底层容器(最佳性能)
  2. emplacepush更高效(避免拷贝构造)
  3. 自定义类型需要重载比较运算符或提供比较器
  4. 多线程环境需要自行实现同步机制

十、性能特征

操作时间复杂度说明
push()O(logN)堆结构调整
pop()O(logN)堆结构调整
top()O(1)直接访问堆顶元素
empty()O(1)检查容器是否为空
http://www.dtcms.com/wzjs/608472.html

相关文章:

  • 静态网站挂马公司网站建设意见
  • 山东建设网站个人域名可以做KTV网站吗
  • 微信群推广网站天津市武清区住房建设网站
  • 怎么做自己的优惠券网站开个平台需要多少钱
  • 个人博客网站制作图片网易企业邮箱入口 官网
  • 宣传型网站建设上海做外贸网站
  • 鲜花网站建设结构布局公司要我做网站_没有公司的材料是不是不可以做
  • 电影网站建设方案ppt模板下载cms开发教程
  • 深圳企业推广网站wordpress ss打不开
  • Python建网站的步骤广州外包公司都有哪些
  • 哪有那样的网站wordpress 网速
  • 网站交互方式怎么注册微网站吗
  • 口碑好网站建设公司电话武邑网站建设
  • 衡水网站建设公司联系电话淘宝搜索关键词查询工具
  • 旅游网站首页如何获取wordpress后台登入网址
  • 网站建设和微信小程序在线制作免费生成图片文字
  • 奇网企业网站管理系统建设银行网站个人中心
  • iis v6 新建网站互联网创业项目app
  • 深圳网站制作公司招聘网站建设后期维护小魔仙
  • 云服务器怎么搭建网站电商平台业务流程图
  • 江苏建设厅网站查询四川网站建设设计
  • 东莞热的建设网站ai软件
  • 确定建设电子网站的目的嘉兴网站推广优化公司
  • 手机网站 教程无锡哪里有做网站的公司
  • 太原网站建设搜q479185700社交网络的推广方法有哪些
  • 互联网网站开发合同教育类网站建设
  • 重庆彭水网站建设wordpress ajax搜索功能
  • 3东莞网站建设网站备案ip查询系统
  • 中山市建设局安全监督站网站php网站后台模板下载
  • 河北网站建设与推广网站建设资料清单