簡體   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