Les comparateurs en STL

Je suis à l'aide struct minHeap pour générer un min tas à l'aide de priority_queue .Et la fonction comp pour imprimer les numéros dans l'ordre inverse à l'aide de la fonction de tri donnée dans la STL . Maintenant, mon doute, c'est que je ne peux pas utiliser struct minHeap dans la fonction de tri et ne pouvez pas utiliser la fonction comp dans priorityQueue .

J'ai l'impression que la fonction des deux struct minHeap et comp est similaire. Merci de m'expliquer quand utiliser les structures pour comaprator et quand utiliser les fonctions normales à se comporter comme des éléments de comparaison dans la STL ?

#include<iostream>
#include <queue>
#include <stdio.h>
#include<algorithm>
using namespace std;

struct minHeap
{
    bool operator()(const int a , const int b )
    {
        return a>b;
    }
};
bool comp(int a , int b)
{
    return a>b;
}

int main()
{
    priority_queue<int , vector<int> , minHeap > b;

    b.push(4);
    b.push(23);
    b.push(12);
    while(b.size()!=0)
    {
        cout << b.top() << " " ;
        b.pop();
    }
    cout<<"\n" ;
    int arr[] = {12,34, 112,12};
    sort(arr , arr+4  ,comp);

    for(int x= 0 ; x < 4 ; x++)
    {
        cout << arr[x] << " " ;
    }
}

OriginalL'auteur Arpit Agarwal | 2012-09-20