【问题标题】:Does STL's priority_queue re-allocate if the container does not?如果容器没有,STL 的 priority_queue 是否会重新分配?
【发布时间】:2018-10-03 17:52:27
【问题描述】:

我对 STL 的 priority_queue 以及它如何分配内存有点困惑。我是否正确假设它不需要自己动态分配内存,而只有底层容器可以?

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

【问题讨论】:

  • 定义“运行时”和“设置”。

标签: c++ memory stl priority-queue


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2015-12-23
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多