bool operator<(parameter1, parameter2)

Hi, I do not know what is going on in the function
bool operator<(WorkOrder a, WorkOrder b). Can anybody please clarify. Thanks!

#include <iostream>
#include <queue>
#include <string>

using namespace std;

class WorkOrder
WorkOrder(int priority, string description);
int get_priority() const;
string get_description() const;
int priority;
string description;

WorkOrder::WorkOrder(int pr, string descr)
priority = pr;
description = descr;

int WorkOrder::get_priority() const
return priority;

string WorkOrder::get_description() const
return description;

bool operator<(WorkOrder a, WorkOrder b)
return a.get_priority() < b.get_priority();

int main()
priority_queue<WorkOrder> tasks;
tasks.push(WorkOrder(2, "Shampoo carpets"));
tasks.push(WorkOrder(3, "Empty trash"));
tasks.push(WorkOrder(2, "Water plants"));
tasks.push(WorkOrder(1, "Remove pencil sharpener shavings"));
tasks.push(WorkOrder(4, "Replace light bulb"));
tasks.push(WorkOrder(9, "Fix overflowing sink"));
tasks.push(WorkOrder(1, "Clean coffee maker"));
tasks.push(WorkOrder(5, "Order cleaning supplies"));

while (tasks.size() > 0)
WorkOrder task =;
cout << task.get_priority() << " - "
<< task.get_description() << "\n";

cout << "\n\n";

return 0;
That function provides a < operator to compare two WorkOrders.

That way the std::priority_queue knows how to order them.
That makes sense.
Thank you for the response!
Registered users can post here. Sign in or register to post.