【问题标题】:How does make_heap method of vector template work?矢量模板的make_heap方法是如何工作的?
【发布时间】:2011-02-17 05:27:48
【问题描述】:

当我使用 stl 向量容器的“make_heap”方法时,它是改变元素的物理地址还是只是在逻辑上改变顺序(通过一些类成员)

让我解释一下:

假设我使用以下结构实现堆

struct heap
{

    int cost;
    struct heap* leftChild;
    struct heap* rightChild;

};

我可以确保只有结构内的指针发生变化。但不是物理地址。这是vector的make_heap的方式吗?

我问这个问题的原因是我有另一个指向堆元素的对象。我想确保即使堆发生变化我也不需要更新这个指针。

【问题讨论】:

  • 你在哪里找到了一个带有 make_heap 方法的向量?

标签: c++ data-structures vector


【解决方案1】:

我猜你指的是std::make_heapvectors 迭代器作为参数。在这种情况下,它只会重新排列向量中的元素,不会导致任何重新分配,因此您可以放心地假设指向向量元素的指针(或迭代器)即使在调用 make_heap 后仍将保持有效。

【讨论】:

  • 它们是“有效的”,但它们不再指向相同的项目。
猜你喜欢
  • 2013-05-18
  • 1970-01-01
  • 2017-12-17
  • 2012-04-15
  • 1970-01-01
  • 2022-12-19
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多