博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ priority_queue的替代品
阅读量:5137 次
发布时间:2019-06-13

本文共 689 字,大约阅读时间需要 2 分钟。

好无聊啊,写博客吧。

众所周知,pq跑的比set快

好吧,但是pq的默认容器是vector,不吸氧不够快啊。

在数次尝试用pq卡常失败后,我决定看一看pq的实现。

发现这东西不是很行,就几十行代码,调用了三个函数,make_heap push_heap pop_heap

好吧,有内部实现还不能魔改吗?

#include 
using namespace std;struct mypq{ static const int MAX_LEN=2333333; int tp,a[MAX_LEN]; mypq(){ tp=0; } mypq(int *be,int *en){ tp=0; for (int *i=be; i!=en; ++i) a[++tp]=*i; make_heap(a+1,a+tp+1); } void push(int v){ a[++tp]=v; push_heap(a+1,a+tp+1); } void pop(){ pop_heap(a+1,a+tp+1); --tp; }};int main(){ }

好吧,我不是很懂内存分配那套理论,所以还不支持可变长度,但至少跑的比vector做容器的快吧,heap的三个函数也支持传入仿函数。

转载于:https://www.cnblogs.com/Yuhuger/p/9902343.html

你可能感兴趣的文章
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
企业级应用与互联网应用的区别
查看>>
itext jsp页面打印
查看>>
Perl正则表达式匹配
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>