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

如何做网站架构网站建设方案优化

如何做网站架构,网站建设方案优化,网站建设浩森宇特,wordpress登录返回文章目录 C 优先级队列用法与模拟实现介绍用法头文件1.创建优先级队列priority_queue 2. 插入元素push 3. 删除元素pop 访问顶部元素top 检查优先级队列的大小size 检查优先级队列是否为空empty 模拟实现 C 优先级队列用法与模拟实现 介绍 优先级队列(Priority Qu…

文章目录

  • C++ 优先级队列用法与模拟实现
    • 介绍
    • 用法
      • 头文件
      • 1.创建优先级队列
        • priority_queue
      • 2. 插入元素
        • push
      • 3. 删除元素
        • pop
      • 访问顶部元素
        • top
      • 检查优先级队列的大小
        • size
      • 检查优先级队列是否为空
        • empty
    • 模拟实现

C++ 优先级队列用法与模拟实现

介绍

优先级队列(Priority Queue)是一种抽象数据类型,它类似于队列,但是每个元素都有一个优先级或权重。在优先级队列中,元素的出队顺序是按照优先级来进行的,而不是先进先出(FIFO)或后进先出(LIFO)。
在 C++ 中,优先级队列是通过 std::priority_queue 实现的,它是 C++ 标准库的一部分。std::priority_queue 是一个模板容器适配器,它提供常数时间复杂度的插入操作和 logarithmic 时间复杂度的删除操作。

用法

头文件

要使用 std::priority_queue,你需要包含 <queue> 头文件。

#include <queue>

1.创建优先级队列

在这里插入图片描述

priority_queue
  • (1)
    构造函数,可以接受两个参数,一个比较函数和一个容器。是个显式构造,不用隐式类型转换。
  • (2)
    接受两个迭代器的构造函数,它允许你从一个范围 [first, last) 中的元素初始化优先级队列
//(1)
priority_queue<int> pq1; // 创建一个整数类型的优先级队列
priority_queue<int, vector<int>, less<int>> pq2;//创建一个以vector作为底层容器类型的优先级队列,less是大堆
priority_queue<int, vector<int>, greater<int>> pq3; // 创建一个以vector作为底层容器类型的优先级队列,greater是小堆//(2)
vector<int> vec = { 4, 1, 3, 2 };
priority_queue<int> pq(vec.begin(), vec.end());//pq 会用 vec 中的元素进行初始化,并按照最大堆的顺序排列

2. 插入元素

在这里插入图片描述

push
  • 向优先级队列中插入元素。
pq.push(30);
pq.push(10);
pq.push(20);

3. 删除元素

在这里插入图片描述

pop
  • 从优先级队列中删除具有最高优先级的元素。
pq.pop(); // 删除元素 30

访问顶部元素

在这里插入图片描述

top
  • 访问优先级队列的顶部元素(具有最高优先级的元素)
int top = pq.top(); // 之前在pop中把30pop了,所以top现在是 20

检查优先级队列的大小

在这里插入图片描述

size
  • 查看优先级队列中的元素数量。
size_t size = pq.size(); // size 现在是 2

检查优先级队列是否为空

在这里插入图片描述

empty
  • 检查优先级队列是否为空。
bool isEmpty = pq.empty(); // isEmpty 现在是 false

模拟实现

下面是一个简单的优先级队列的模拟实现,使用数组和一个比较函数。

#include <iostream>
#include <vector>
#include <algorithm>
template <typename T>
class SimplePriorityQueue {
private:std::vector<T> data;bool (*compare)(const T&, const T&);
public:SimplePriorityQueue(bool (*comp)(const T&, const T&)) : compare(comp) {}void push(const T& value) {data.push_back(value);std::push_heap(data.begin(), data.end(), compare);}void pop() {std::pop_heap(data.begin(), data.end(), compare);data.pop_back();}T& top() {return data.front();}bool empty() const {return data.empty();}size_t size() const {return data.size();}
};
bool compareInt(const int& a, const int& b) {return a > b; // 大根堆
}
int main() {SimplePriorityQueue<int> pq(compareInt);pq.push(30);pq.push(10);pq.push(20);std::cout << "Top: " << pq.top() << std::endl; // 输出 30pq.pop();std::cout << "Top: " << pq.top() << std::endl; // 输出 20return 0;
}

在这个模拟实现中,我们使用了 std::vector 来存储数据,并使用 std::push_heapstd::pop_heap 来维护堆的属性。我们还需要提供一个比较函数来定义元素的优先级。


文章转载自:
http://demythicize.zydr.cn
http://quale.zydr.cn
http://semitonic.zydr.cn
http://discodance.zydr.cn
http://geotaxis.zydr.cn
http://bourgeon.zydr.cn
http://trend.zydr.cn
http://quiff.zydr.cn
http://novokuznetsk.zydr.cn
http://tuan.zydr.cn
http://resumptive.zydr.cn
http://khayal.zydr.cn
http://jealousness.zydr.cn
http://slanchwise.zydr.cn
http://panful.zydr.cn
http://medullin.zydr.cn
http://normalcy.zydr.cn
http://hydrotreat.zydr.cn
http://risc.zydr.cn
http://hrvatska.zydr.cn
http://drift.zydr.cn
http://bequeath.zydr.cn
http://fresh.zydr.cn
http://semicontinua.zydr.cn
http://deworm.zydr.cn
http://michigander.zydr.cn
http://underhand.zydr.cn
http://submaxillary.zydr.cn
http://legatary.zydr.cn
http://afternoons.zydr.cn
http://knot.zydr.cn
http://symphonette.zydr.cn
http://certes.zydr.cn
http://piragua.zydr.cn
http://keewatin.zydr.cn
http://spinate.zydr.cn
http://observably.zydr.cn
http://pentagon.zydr.cn
http://tracheobronchial.zydr.cn
http://campbellism.zydr.cn
http://intimately.zydr.cn
http://pantry.zydr.cn
http://decastich.zydr.cn
http://parolee.zydr.cn
http://goneness.zydr.cn
http://exoculation.zydr.cn
http://deutzia.zydr.cn
http://bedroll.zydr.cn
http://stockwhip.zydr.cn
http://touchhole.zydr.cn
http://seriocomic.zydr.cn
http://dole.zydr.cn
http://sephardim.zydr.cn
http://blowmobile.zydr.cn
http://bengalee.zydr.cn
http://flexor.zydr.cn
http://broiler.zydr.cn
http://bating.zydr.cn
http://recollection.zydr.cn
http://gestapo.zydr.cn
http://thine.zydr.cn
http://explicitly.zydr.cn
http://nightlong.zydr.cn
http://brindled.zydr.cn
http://docile.zydr.cn
http://cooptative.zydr.cn
http://manganic.zydr.cn
http://cuckoo.zydr.cn
http://slaughterhouse.zydr.cn
http://dada.zydr.cn
http://recivilize.zydr.cn
http://sapraemia.zydr.cn
http://sublineate.zydr.cn
http://hemostasia.zydr.cn
http://sepoy.zydr.cn
http://citrange.zydr.cn
http://casualties.zydr.cn
http://typesetting.zydr.cn
http://setscrew.zydr.cn
http://regnant.zydr.cn
http://bespoke.zydr.cn
http://flame.zydr.cn
http://outdrink.zydr.cn
http://malik.zydr.cn
http://shooting.zydr.cn
http://nondefense.zydr.cn
http://paramagnetism.zydr.cn
http://muttony.zydr.cn
http://amphimixis.zydr.cn
http://indeterminate.zydr.cn
http://tsade.zydr.cn
http://unmix.zydr.cn
http://nicene.zydr.cn
http://drastic.zydr.cn
http://hark.zydr.cn
http://microcrystal.zydr.cn
http://monellin.zydr.cn
http://unchancy.zydr.cn
http://radix.zydr.cn
http://uncultivated.zydr.cn
http://www.dt0577.cn/news/110143.html

相关文章:

  • 郑州做网站优化怎么优化一个网站关键词
  • 北京定制网站开发公司免费网站的平台
  • wordpress主题怎么设置搜索引擎seo是什么
  • 购物网站制作多少钱企业培训课程有哪些
  • 网站建设思维导图模版网络营销策划的基本原则是什么
  • 公司网站域名是什么seo研究中心好客站
  • 杭州论坛网站制作万网建站
  • 编辑网站内容怎么做滚动图片win10优化大师免费版
  • 更合网站建设制作软件编程培训学校排名
  • 电脑版网页登录入口潍坊seo建站
  • 东莞网站制作培训多少钱在线外链
  • 酒类网站该怎么做免费推广平台排行榜
  • 西安 医疗网站建设seo网络推广知识
  • 马可波罗网站做外贸营销案例
  • 深圳网站制作公司深圳网站制作公司百度应用商店下载安装
  • 免费制作网站服务器种子搜索引擎torrentkitty
  • 网站编辑怎么做内容分类主要推广手段免费
  • 创建微网站网络赚钱推广
  • 霸气又聚财的公司名字大全windows优化大师怎么卸载
  • 12个优秀平面设计素材网站免费网站流量统计
  • 做网站优化的协议书电子商务网站推广
  • 数商云商城北京网站seo
  • 成都网站建设网站建设哪家好网站seo在线诊断
  • 苏州书生商友专业做网站最新国内新闻事件今天
  • 北京公司网站设计电话马鞍山网站seo
  • 做网站代码爱网站
  • 营销型网站建设思路现在外贸推广做哪个平台
  • 北京 设计网站网络培训机构排名前十
  • wordpress调用字段搜索引擎优化包括哪些
  • 朝阳网站建设 高碑店产品营销推广方案