Because a multi-set does not need the storage of single-element objects. 
You're considering storing anything in a multi-set, such as a string. 
But it is not its intended use. 
You may use whatever struct you want and compare it to a single element in the struct.
As an example:
struct PhoneBookEntry
{
    std::string name;
    std::string phoneNumber;
}
There's no reason to have a single entry per name in a phone book in this unsophisticated "phone book" entry. 
There may be a lot. 
So you create a PhoneBookEntry multiset and make the comparator by name. 
You may have many phone numbers with the same name this way.
You could assume that a map is more appropriate for this. 
However, this is only one example. 
A multiset is used when you don't require a key/value pair but need the search features of a set with several entries per key.