矢量模板的make_heap方法如何工作?

时间:2011-02-17 05:27:49

标签: c++ data-structures vector

当我使用stl向量容器的“make_heap”方法时,它是否会更改元素的物理地址,或者它只是逻辑地更改顺序(通过某个类成员)

让我解释一下:

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

struct heap
{

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

};

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

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

1 个答案:

答案 0 :(得分:0)

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