как работает перегрузка оператора в случае priority_queue? - PullRequest
1 голос
/ 03 августа 2020
#define ROW 5 
#define COL 2 

class Person { 

public: 
int age; 

float height; 


 Person(int age, float height) 
    : age(age), height(height) 
{ 
} 
}; 

Как этот код перегрузки оператора отвечает за max_Heap ?? если мы заменим <на>, то получится min_heap, как это работает? Что делает сравнение, то есть p1.height

   // we are doing operator overloading through this 
    bool operator<(const Person& p1, const Person& p2) 
    { 
        return p1.height < p2.height; 
    }

int main() 
{ 

priority_queue<Person> Q; 

float arr[ROW][COL] = { { 30, 5.5 }, { 25, 5 },  
           { 20, 6 }, { 33, 6.1 }, { 23, 5.6 } }; 

for (int i = 0; i < ROW; ++i) { 

    Q.push(Person(arr[i][0], arr[i][1])); 

    // insert an object in priority_queue by using 
    // the Person class constructor 
} 

while (!Q.empty()) { 

    Person p = Q.top(); 

    Q.pop(); 

    cout << p.age << " " << p.height << "\n"; 
} 
return 0; 
}
...