C++ STL priority_queue容器适配器究竟是如何实现高效优先级队列管理的?

2026-04-17 01:061阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2037个文字,预计阅读时间需要9分钟。

C++ STL priority_queue容器适配器究竟是如何实现高效优先级队列管理的?

priority_queue 容器适配器模拟的也是一种队列存储结构,它使用此容器存储元素。元素只能从一端(称为队尾)进入,从另一端(称为队头)退出,且每次只能访问队头元素。

priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能“从一端进(称为队尾),从另一端出(称为队头)”,且每次只能访问 priority_queue 中位于队头的元素。

但是,priority_queue 容器适配器中元素的存和取,遵循的并不是 “First in,First out”(先入先出)原则,而是“First in,Largest out”原则。直白的翻译,指的就是先进队列的元素并不一定先出队列,而是优先级最大的元素最先出队列。

注意,“First in,Largest out”原则是笔者为了总结 priority_queue 存取元素的特性自创的一种称谓,仅为了方便读者理解。

那么,priority_queue 容器适配器中存储的元素,优先级是如何评定的呢?很简单,每个 priority_queue 容器适配器在创建时,都制定了一种排序规则。根据此规则,该容器适配器中存储的元素就有了优先级高低之分。

举个例子,假设当前有一个 priority_queue 容器适配器,其制定的排序规则是按照元素值从大到小进行排序。根据此规则,自然是 priority_queue 中值最大的元素的优先级最高。
阅读全文

本文共计2037个文字,预计阅读时间需要9分钟。

C++ STL priority_queue容器适配器究竟是如何实现高效优先级队列管理的?

priority_queue 容器适配器模拟的也是一种队列存储结构,它使用此容器存储元素。元素只能从一端(称为队尾)进入,从另一端(称为队头)退出,且每次只能访问队头元素。

priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能“从一端进(称为队尾),从另一端出(称为队头)”,且每次只能访问 priority_queue 中位于队头的元素。

但是,priority_queue 容器适配器中元素的存和取,遵循的并不是 “First in,First out”(先入先出)原则,而是“First in,Largest out”原则。直白的翻译,指的就是先进队列的元素并不一定先出队列,而是优先级最大的元素最先出队列。

注意,“First in,Largest out”原则是笔者为了总结 priority_queue 存取元素的特性自创的一种称谓,仅为了方便读者理解。

那么,priority_queue 容器适配器中存储的元素,优先级是如何评定的呢?很简单,每个 priority_queue 容器适配器在创建时,都制定了一种排序规则。根据此规则,该容器适配器中存储的元素就有了优先级高低之分。

举个例子,假设当前有一个 priority_queue 容器适配器,其制定的排序规则是按照元素值从大到小进行排序。根据此规则,自然是 priority_queue 中值最大的元素的优先级最高。
阅读全文