繁体   English   中英

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

[英]How does make_heap method of vector template work?

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

让我解释更多:

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

struct heap
{

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

};

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM