C++小问题求证..
MinHeap::MinHeap(int arr[],int n)
{
MaxHeapSize = DefaultSize < maxSize ? maxSize : DefaultSize;
heap = new int[MaxHeapSize];
heap = arr;//复制堆数组
CurrentSize = n;//建立当前大小
int currentPos = (CurrentSize - 2) / 2;
while(currentPos >= 0)
{
FilterDown(currentPos,CurrentSize - 1);
currentPos--;
}
}
这个函数是数据结构最小堆的构造函数之一,复制一个数组并调整成堆,如上代码包括注释都是书上的.传递进来的参数是指向数组首元素地址的指针,接着又对成员指针heap赋值(也就是数组首元素地址),相当于让heap也指向该数组首元素.那么这句heap = new int[MaxHeapSize]还有什么用呢?是不是完全没有达到复制的效果呢?...书上为什么说复制堆数组呢? 验证书上的错误.