In this article we will see how to use external Sorting Criteria i.e. Comparator in std::set.

Suppose our class is Message that contains three properties i.e.
• Member content
• Sending User Name
• Receiving User Name

Requirement:
we want to keep only single message sent by each user i.e. only one sent message is allowed per user and we can’t modify operator <.

Solution:

Use external sorting criteria i.e. comparator

Message Class,

Now create a Message comparator,

According to above implementation of comparator two Message objects are compared on the bases of all the sent user name.

So suppose we created 4 Message objects,

Here only msg1, msg2 and msg4 are equal because according to MessageUserComparator implementation.

So, if we insert all the above objects in std::set i.e.

Then out of 4 only 2 will be inserted.

Let’s use the message comparator with std::set of messages,

Output:
user_1 :: user_2 :: Hello
user_3 :: user_1 :: Hello
Thanks.

Click Here to Subscribe for more Articles / Tutorials like this.