这个功能是做什么的

时间:2014-10-22 18:32:59

标签: c++ function heap

这是一个比较器的程序,我应该以优先级队列为基础。

#ifndef COMPARATOR_H
#define COMPARATOR_H

#include "Point.h"

class mycomparison
{
 Point dest;
 public:
    mycomparison(Point *d)
    {
        dest.setRow(d->getRow());
        dest.setColumn(d->getColumn());
    }

    bool operator() (const Point& lhs, const Point& rhs) const
    {
        return (lhs.distanceFrom(dest) > rhs.distanceFrom(dest));
    }
};

#endif

也就是说,点的对象dest包含值距离,二进制最小堆的数组成员相应地进行比较和排序。

我需要知道这个函数bool operator()(const Point& lhs,const Point& rhs)const是如何工作的?我知道它需要两个对象并比较它们返回true或false。但我无法制定函数调用。我一直收到错误:

在成员函数'virtual void PriorityQueueArray :: push(const Point&)'中:PriorityQueueArray.cpp:57:17:错误:在'('token

之前的预期类型说明符

这是我的函数调用以及所需的头文件。

#include "PriorityQueueADT.h"
#include "comparator.h"
#include "Point.h"

#include <iostream>

using namespace std; 

 class PriorityQueueArray : public PriorityQueueADT {
 private:

 Point *Array;
 Point *P;
 int siz;
 int num;

 public:
    PriorityQueueArray(Point *destination);

    void push (const Point& val);
    bool empty();
    Point top();
    void pop();
    int size();

};

void PriorityQueueArray::push (const Point& val)
{
 mycomparison M(P);
 Point temp;
 if(empty()){
    num=1;
    Array[num]=val;
 }

else{
    if(num==siz-1){
        Point *Arr=new Point[2*siz];
        for(int i=1; i<siz; i++)
            Arr[i]=Array[i];

        Array=Arr; siz=2*siz;
        }

    num++;
    Array[num]=val;

    if(num==2){
        if(M.operator(Array[2], Array[1])){
        temp=Array[2];
        Array[2]=Array[1];
        Array[1]=temp;
        }
    }

    else{
        int j=num;
        while(j>1){
            if(M.operator (Array[j], Array[j/2])){
                temp=Array[j];
                Array[j]=Array[j/2];
                Array[j/2]=temp;
                j=j/2;
                }
            }
        }       
    }
    return;

    }

我只需要知道对operator()的函数调用的语法。

0 个答案:

没有答案