[英]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.