手写堆相比STL的优点

灌水区

Dream__Sky @ 2023-12-13 23:03:36

rt谢谢


by Dream__Sky @ 2023-12-13 23:04:00

就是有没有STL不能用的地方,比须手写


by HashHacker_Peas @ 2023-12-13 23:29:41

@Dream__Sky 优先队列无法修改与删除非堆头元素,且较手写堆速度慢一点,此外就没啥了(优先队列修改与删除可以多开一个unordered_map来标记,并且开O2后常数不大,真没什么缺点)


by HashHacker_Peas @ 2023-12-13 23:32:23

手写堆码量大且不易调试,有手写堆的时间都可以用stl堆写一半了


by Tibrella @ 2023-12-13 23:38:46

主要速度差距在于动态分配内存。

以及手写堆可以采用配对堆等变种堆(比如说堆模板题的最优解)(参考我主页的链接)

pbds 的配对堆由于加了很多其他功能应该要低效不少


by Argvchs @ 2023-12-14 01:01:21

@Tibrella 最优解被我抢了(


by wzc_IOI_czl @ 2023-12-14 11:21:52

@hash_peas
这个不算吧,可以开两个优先队列,把想删的元素(你删的时候必须要保证存在)丢进第二个队列里,每次从堆顶取元素的时候看一下 如果两个堆顶元素相等那么都pop然后重新取。


by HashHacker_Peas @ 2023-12-14 12:35:53

@fast_photon deque的确,这算不上什么大问题


by Tibrella @ 2023-12-14 12:56:37

@Argvchs 拜谢了


|