Certain STL containers and algorithms require that you overload operator < for the class type they store as elements in order to sort and compare these elements. Note that STL derives the equality operator from the < operator by using the following construct
bool operator==( const T & arg1, const T & arg2)
return (!(arg1<arg2)) && (!(arg1<arg2))
In other words, you don't need to define an overloaded version of operator == (or any other relational operator) because STL is clever enough to generate these operators from operator <. You only need to define an overloaded version of operator < for user-defined types.