#include <queue>
#include <vector>
#include <functional>
using namespace std;

int main(){
    typedef pair<int,float> ifpair;
    std::function<bool(ifpair,ifpair)> comp = []( ifpair a,  ifpair b ) { return a.second > b.second; };
    typedef priority_queue< ifpair , vector<ifpair>, decltype( comp ) > t_npq;
    t_npq npq( comp );
    //do something with npq. finish using it (without emptying it) and clear for next round
    t_npq empty( comp );
    swap(npq , empty);
}
