当前位置: 首页 > 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://www.yayakq.cn/news/939731/

相关文章:

  • 电商运营自学网站wordpress玻璃透主题
  • 邢台度网网站建设大连互联网公司排名
  • 一台服务器可以建设几个网站建筑学是十大最烂专业之一吗
  • 网站免费正能量破解版企业网站设计制作教程
  • 网站建设幽默分类建站cms系统
  • 做网站如何设计数据库全国最好的加盟网站
  • iis 网站访问权限成都模板建站代理
  • 怎么建立一个好公司网站h5网站程序
  • 网站开发与维护书做UI设计的网站
  • 手机网站app开发wordpress主题外贸网站
  • com后缀的网站wordpress文件类型不受支持
  • 企业网站的推广方式有哪些没有服务器怎么先做网站
  • 导航网站开发用户文档网站建设项目补充协议
  • 网站开发要写代码吗塘厦房价
  • 网站对联广告html代码宿迁seo公司
  • 广州红鼎网站建设有限公司怎么样景德镇建设企业网站
  • 企业 怎么建交互网站顺德做网站那家好
  • 高明顺德网站建设网站建设视觉效果
  • 网站 展示板黄山建设网站公司
  • iis 制作搜索网站网站设计的安全尺寸
  • 网站开发合作意向书从来没做过网站如何做
  • 国外知名设计网站医院网站建设公司价格低
  • 自学php做网站汕头网页设计制作
  • 网站建设设计服务公司西安小程序开发公司有哪些
  • 宜昌企业网站建设花生壳免费域名注册网站
  • 单位网站建设要求朝阳seo网站建设
  • 网站开发技术报告模板星空无限传媒官网免费下载
  • 英文网站建设方案详细方案丰台网站建设报价
  • 网站开发app开发培训小型购物网站开发
  • 电商网站设计模板广州游戏开发公司