vector<T> print_queue(PriorityQueue<T> &q){ vector<T> ret; while(!q.isEmpty()) { ret.push_back(q.getTop()); q.pop(); } return ret; }
void heap_sort(T &begin, T &end) { PriorityQueue<int> p; T it = begin; while(it!=end) { p.push(*it); it++; } it = begin; while(it!=end) { *it = p.getTop(); p.pop(); it++; } }