2011-02-17 43 views
2

當我使用STL向量容器「make_heap」的方法,它改變元素的物理地址或者它只是改變了順序邏輯(通過一些類成員)矢量模板的make_heap方法如何工作?

讓我解釋更多:

假設我使用以下結構實現Heap

struct heap 
{ 

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

}; 

我可以確保只有結構內部的指針發生變化。但不是物理地址。這是矢量的make_heap嗎?

我問這個問題的原因是我有另一個對象指向堆的元素。我想確保即使堆更改,我也不需要更新此指針。

+1

你在哪裏找到了一個make_heap方法的向量? – 2011-02-17 05:34:14

回答

0

我想你是指std::make_heapvector s迭代器作爲參數。在這種情況下,它只重新排列向量中的元素,並且不會導致任何重新分配,因此您可以放心地假定即使在調用make_heap之後向量元素的指針(或迭代器)仍然有效。

+3

他們是「有效的」,但他們不再指向相同的項目。 – 2011-02-17 05:39:44