#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);
}
I2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCl7CiAgICB0eXBlZGVmIHBhaXI8aW50LGZsb2F0PiBpZnBhaXI7CiAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woaWZwYWlyLGlmcGFpcik+IGNvbXAgPSBbXSggaWZwYWlyIGEsICBpZnBhaXIgYiApIHsgcmV0dXJuIGEuc2Vjb25kID4gYi5zZWNvbmQ7IH07CiAgICB0eXBlZGVmIHByaW9yaXR5X3F1ZXVlPCBpZnBhaXIgLCB2ZWN0b3I8aWZwYWlyPiwgZGVjbHR5cGUoIGNvbXAgKSA+IHRfbnBxOwogICAgdF9ucHEgbnBxKCBjb21wICk7CiAgICAvL2RvIHNvbWV0aGluZyB3aXRoIG5wcS4gZmluaXNoIHVzaW5nIGl0ICh3aXRob3V0IGVtcHR5aW5nIGl0KSBhbmQgY2xlYXIgZm9yIG5leHQgcm91bmQKICAgIHRfbnBxIGVtcHR5KCBjb21wICk7CiAgICBzd2FwKG5wcSAsIGVtcHR5KTsKfQo=