hashing class caseinsensitivestringhash publicsize_t operatorconst string const static hash hfreturn hftolowers )/tolower implemented elsewhere bool operatorconst string lhsconst string rhs const return equalsignorecaselhsrhs )/equalsignorecase is elsewhere }unordered_set sfigure creating case-insensitive unordered_set these unordered classes can be used if it is not important for the entries to be viewable in sorted order for instancein the word-changing example in section there were three maps map in which the key is word lengthand the value is collection of all words of that word length map in which the key is representativeand the value is collection of all words with that representative map in which the key is wordand the value is collection of all words that differ in only one character from that word because the order in which word lengths are processed does not matterthe first map can be an unordered_map because the representatives are not even needed after the second map is builtthe second map can be an unordered_map the third map can also be an unordered_mapunless we want printhighchangeables to alphabetically list the subset of words that can be changed into large number of other words the performance of an unordered_map can often be superior to mapbut it is hard to know for sure without writing the code both ways hash tables with worst-case ( access the hash tables that we have examined so far all have the property that with reasonable load factorsand appropriate hash functionswe can expect ( cost on average for insertionsremovesand searching but what is the expected worst case for search assuming reasonably well-behaved hash function