
手撕 C++ priority_queue:二叉堆 + 模板仿函数 + 模板特化(保姆级逐函数拆解)
本文手写简化版std::priority_queue,深入解析其底层二叉堆原理与STL设计精髓。基于完全二叉树的数组存储实现,利用下标公式(父= (child-1)/2,左孩= parent×2+1)保证O(1)访问堆顶。通过模板参数T、Container、compare实现容器适配器模式,强调仿函数(functor)优于函数指针:支持内联、可携带状态、统一接口。重点解决指针比较问题,通过模板全特化Less<int*>实现按值比较。核心函数push(尾插+上浮)、pop(交换末尾+下沉)均保持O



