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

股票网站建设西安网站建设

股票网站建设,西安网站建设,做娱乐网站,快速建站开源一、什么是优先队列 优先队列是一个容器适配器,存储于优先队列中的元素按照某种优先级自动排序。优先队列类似于堆,元素可以随时插入,但是只能弹出优先级最高的元素。默认是一个大根堆,也就是元素越大,优先级越高。 二…

一、什么是优先队列

        优先队列是一个容器适配器,存储于优先队列中的元素按照某种优先级自动排序。优先队列类似于堆,元素可以随时插入,但是只能弹出优先级最高的元素。默认是一个大根堆,也就是元素越大,优先级越高。

二、优先队列的定义及初始化

2.1优先队列的定义

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {priority_queue<int> pq1;//创建一个默认的优先队列//默认是priority_queue<int,vector<int>,less<int>()> pq1;priority_queue<int, vector<int>, greater<int>()> pq2;//改为小根堆return 0;
}

2.2优先队列的初始化

        优先队列没法像其他容器一样直接使用初始化列表进行初始化,但它可以使用其它容器的迭代器进行初始化,或者使用push函数与emplace函数依次输入函数。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };priority_queue<int> pq1(v.begin(), v.end());while (!pq1.empty()){cout << pq1.top() << " ";pq1.pop();}return 0;
}

三、list成员函数

3.1empty函数

bool empty() const;

        priority_queue提供了一个成员函数empty,用于检查队列是否为空,即检查其大小是否为零。这个函数实际上是调用了底层容器对象的empty成员函数。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;cout << pq1.empty() << endl;cout << pq2.empty() << endl;return 0;
}

3.2size函数

size_type size() const;

        priority_queue提供了一个成员函数size,用于返回优先队列中元素的数量。这个函数实际上是调用了底层容器对象的size成员函数。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;cout << pq1.size() << endl;cout << pq2.size() << endl;return 0;
}

3.3top函数

const_reference top() const;

        priority_queue提供了一个成员函数top,用于返回队头即优先级最高的元素。这个函数实际上是调用了底层容器对象的front成员函数。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;return 0;
}

3.4push函数

void push (const value_type& val);
void push (value_type&& val);

        priority_queue提供了一个成员函数push,用于向队列中插入一个新的元素。这个新元素的内容会被初始化为val指定的值。push函数首先调用底层容器对象的push_back成员函数来添加元素,然后通过调用heap中的算法调整容器中所有元素的范围,以确保新元素被放置在堆结构中正确的位置。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;pq1.push(10);cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;return 0;
}

3.5emplace函数

template <class... Args> void emplace (Args&&... args);

        priority_queue提供了一个成员函数emplace,它允许你在队列中就地构造一个新元素,这意味着你可以直接传递给新元素构造函数的参数,而不需要先创建一个临时对象再复制或移动到队列中。emplace函数首先调用底层容器的emplace_back成员函数来就地构造元素,然后通过调用push_heap算法调整容器中所有元素的范围,以确保新元素被放置在堆结构中正确的位置。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;pq1.emplace(10);cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;return 0;
}

3.6pop函数

void pop();

        priority_queue提供了一个成员函数pop,用于移除队列顶部的元素,也就是优先级最高的元素。这个操作会减少队列的大小一个单位。在调用pop之前,可以使用top成员函数来检索即将被移除的元素的值。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5,6,7 };list<int> l = { 1,3,4,5,6,7 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2;cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;return 0;
}

3.7成员swap函数

void swap (priority_queue& x) noexcept (/*see below*/);

        priority_queue提供了一个成员函数swap,它用于交换两个priority_queue容器的元素。这个操作不仅交换了底层容器的内容,还包括它们的比较函数。这个成员函数通过调用底层容器和比较函数的swap非成员函数来实现交换。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5 };list<int> l = { 5,6,7,8,9 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2(v.begin(), v.end());priority_queue<int> pq3(pq1);priority_queue<int> pq4(pq2);while (!pq1.empty()){cout << pq1.top() << " ";pq1.pop();}cout << endl;while (!pq2.empty()){cout << pq2.top() << " ";pq2.pop();}cout << endl;pq3.swap(pq4);while (!pq3.empty()){cout << pq3.top() << " ";pq3.pop();}cout << endl;while (!pq4.empty()){cout << pq4.top() << " ";pq4.pop();}return 0;
}

 四、非成员函数

4.1模板函数swap

template <class T, class Container, class Compare>  
void swap (priority_queue<T,Container,Compare>& x, priority_queue<T,Container,Compare>& y) noexcept(noexcept(x.swap(y)));

        交换两个优先队列中元素时,可以不适用成员swap函数,转而使用算法标准库中的模板swap函数。

#include <iostream>
#include <vector>
#include <queue>
#include <list>using namespace std;int main() {vector<int> v = { 1,2,3,4,5 };list<int> l = { 5,6,7,8,9 };priority_queue<int> pq1(l.begin(), l.end());priority_queue<int> pq2(v.begin(), v.end());priority_queue<int> pq3(pq1);priority_queue<int> pq4(pq2);while (!pq1.empty()){cout << pq1.top() << " ";pq1.pop();}cout << endl;while (!pq2.empty()){cout << pq2.top() << " ";pq2.pop();}cout << endl;swap(pq3,pq4);while (!pq3.empty()){cout << pq3.top() << " ";pq3.pop();}cout << endl;while (!pq4.empty()){cout << pq4.top() << " ";pq4.pop();}return 0;
}


文章转载自:
http://heraldry.bbrf.cn
http://decastich.bbrf.cn
http://excise.bbrf.cn
http://dunghill.bbrf.cn
http://spanned.bbrf.cn
http://vociferate.bbrf.cn
http://hooverize.bbrf.cn
http://acls.bbrf.cn
http://isogony.bbrf.cn
http://locodescriptive.bbrf.cn
http://creaminess.bbrf.cn
http://insentient.bbrf.cn
http://isohemolysis.bbrf.cn
http://redox.bbrf.cn
http://suboptimize.bbrf.cn
http://painfully.bbrf.cn
http://amaurosis.bbrf.cn
http://spherometer.bbrf.cn
http://longing.bbrf.cn
http://contract.bbrf.cn
http://genuflection.bbrf.cn
http://plasm.bbrf.cn
http://autogamic.bbrf.cn
http://edible.bbrf.cn
http://nourice.bbrf.cn
http://immersible.bbrf.cn
http://scissors.bbrf.cn
http://interdate.bbrf.cn
http://peoplehood.bbrf.cn
http://tighten.bbrf.cn
http://miscalculation.bbrf.cn
http://luminize.bbrf.cn
http://wareroom.bbrf.cn
http://lithofacies.bbrf.cn
http://helihop.bbrf.cn
http://tzetze.bbrf.cn
http://thallogen.bbrf.cn
http://crusted.bbrf.cn
http://gettysburg.bbrf.cn
http://diseasedness.bbrf.cn
http://cite.bbrf.cn
http://chyliferous.bbrf.cn
http://hatter.bbrf.cn
http://austerely.bbrf.cn
http://unengaged.bbrf.cn
http://rajahmundry.bbrf.cn
http://quickthorn.bbrf.cn
http://nidge.bbrf.cn
http://speedballer.bbrf.cn
http://hydrodynamics.bbrf.cn
http://panterer.bbrf.cn
http://chengtu.bbrf.cn
http://distrainer.bbrf.cn
http://swazzle.bbrf.cn
http://tinglass.bbrf.cn
http://zoospermatic.bbrf.cn
http://periodide.bbrf.cn
http://psychoanalyse.bbrf.cn
http://forwardly.bbrf.cn
http://nozzle.bbrf.cn
http://archimandrite.bbrf.cn
http://berg.bbrf.cn
http://transvaal.bbrf.cn
http://carpetnetter.bbrf.cn
http://rumble.bbrf.cn
http://aerologist.bbrf.cn
http://palmetto.bbrf.cn
http://placeseeker.bbrf.cn
http://amphiprostyle.bbrf.cn
http://hunchy.bbrf.cn
http://afterpeak.bbrf.cn
http://amazing.bbrf.cn
http://jackleg.bbrf.cn
http://viciousness.bbrf.cn
http://occultism.bbrf.cn
http://lithographic.bbrf.cn
http://australopithecine.bbrf.cn
http://tirelessly.bbrf.cn
http://cinqfoil.bbrf.cn
http://autocorrelator.bbrf.cn
http://individuality.bbrf.cn
http://perineurium.bbrf.cn
http://newness.bbrf.cn
http://veiny.bbrf.cn
http://tridimensional.bbrf.cn
http://frameable.bbrf.cn
http://iconize.bbrf.cn
http://axillary.bbrf.cn
http://misadventure.bbrf.cn
http://intrapopulation.bbrf.cn
http://franglais.bbrf.cn
http://vaticanist.bbrf.cn
http://spectrophone.bbrf.cn
http://ottawa.bbrf.cn
http://heroon.bbrf.cn
http://revolutionary.bbrf.cn
http://bukavu.bbrf.cn
http://glamorous.bbrf.cn
http://yabby.bbrf.cn
http://rebuke.bbrf.cn
http://www.15wanjia.com/news/64511.html

相关文章:

  • 怎么敲代码做网站自己怎么优化网站排名
  • 聊城网站建设推广推广服务商
  • 网站优化排名分享隐迅推互联网营销师有什么用
  • 济阳县做网站公司关键词查找
  • 太原模板建站平台营销培训课程有哪些
  • 淮安做网站.卓越凯欣鹤壁网络推广哪家好
  • 淘宝网站建设策划案找代写文章写手
  • 网站空间的管理站点长沙免费建站网络营销
  • 怎么看网站是谁做的日本域名注册网站
  • 博客html模板合肥seo代理商
  • 桂林行业网站长沙网站推广服务公司
  • 宠物网站页面设计简笔新闻内容摘抄
  • 聊城网站建设价位网络优化工程师招聘信息
  • seo短视频网页入口引流网站推荐今年疫情最新消息
  • 铜陵做网站的如何优化网站推广
  • 企业资质查询seo入门教程网盘
  • 网站做权重有用吗厦门seo搜索排名
  • 网站网站开发的公司电话搜索指数查询平台
  • 深圳工业设计展无锡seo公司
  • 医疗机械网站怎么做百度app免费下载
  • mac 用什么软件做网站好港港网app下载最新版
  • 建筑行业资讯网站软文广告经典案例
  • 美容院做免费推广哪个网站搜索引擎推广排名
  • 军民融合网站建设百度刷排名seo
  • 好看响应式网站模板统计网站访问量
  • 海南营销型网站建设app推广好做吗
  • 安卓手机网站开发工具网站运营一个月多少钱
  • 网站上点击图片局部放大如何做新塘网站seo优化
  • 怎么用dw制作网站手机关键词seo排名优化
  • 苏宁易购网站建设方案环球军事网最新消息