My question is how does the priority Queue sort the Blocks *? More specifically how can I have it give one Block* a high priority solely base on the time variable? (I hope this is clear)
Maybe I could explain. If you had done this: priority_queue<block> p_queue;
You would get a very long list of errors which all stem from there being no operator< for block. You could overload this operator if you wanted.
When you do this: priority_queue<block*> p_queue;
You don't get any errors because the operator< is acting upon memory locations. It is a better idea to make a cmp_blocks, or comp_data, than to overload the < operator when dealing with pointers.
You have to add std::vector<block*> in there because it's simply the first of two deafault values in the priotity_queue's constructor.