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

Mat*_*ijs 2 c++ memory stl priority-queue

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

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

Nic*_*las 6

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

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