如果容器没有,STL的priority_queue会重新分配吗?

时间:2018-04-23 15:55:21

标签: c++ memory stl priority-queue

我对STL的priority_queue以及它如何分配内存感到有些困惑。我是否正确地假设它不需要动态分配内存本身,但只有底层容器可以?

这意味着使用像Boost的static_vector这样的东西作为容器会导致priority_queue一旦设置就永远不会分配。我需要像实时应用程序中的priority_queue这样的东西,我不想分配内存运行时,因此问题。

1 个答案:

答案 0 :(得分:6)

priority_queue是一个容器适配器;它只是容器本身的一个界面。因此,它的行为只是它给出的容器的行为。具体来说,它要求容器是随机访问容器(因此支持常见的容器内容,如begin / end / insert /等。)

因此,分配行为基于底层容器的行为。如果从容器中删除元素可以释放内存,或者在删除后插入分配内存,那么这些操作将解除分配或分配内存。