c++ priority_queue 为什么没有实现自动排序
时间: 2023-08-26 11:21:37 浏览: 108
c++语言实现排序
C++ 的 priority_queue 是通过堆实现的,堆是一种完全二叉树。在堆中,每个节点的值都大于等于或小于等于其子节点的值,这种性质被称为堆的“堆序性”。因此,堆可以快速找到最小或最大元素。
priority_queue 的实现方式是使用堆来维护元素的优先级顺序。在 priority_queue 中,元素的优先级是由它们的值决定的,而不是由它们的位置决定的。当一个元素被插入到 priority_queue 中时,它会被放到堆的最后一个位置,并且堆会通过重复交换该元素和其父节点的位置来保持堆序性质,直到该元素被放到它应该在的位置上。
由于 priority_queue 是通过堆实现的,它不能自动排序。当一个元素被插入到 priority_queue 中时,堆会保持它的堆序性质,但是它并不会保持整个 priority_queue 的有序性质。如果你需要在 priority_queue 中保持元素的有序性,你可以使用 STL 中的其他容器,例如 vector 或 deque,并使用 STL 中的算法来对其进行排序。
阅读全文