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

Does STL's priority_queue re-allocate if the container does not?

我对 STL priority_queue 及其分配内存的方式有些困惑。我是否正确地假设它本身不需要动态分配内存,而只有底层容器才可以?

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

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

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