These classes are analogous to std::set, std::multiset, std::map and std::multimap, but are based on a hash table. The design and implementation of these classes has the following goals:
Not all of these goals can be simultaneously met. For example, optimizations often require a trade-off between size and speed. "Ease of use" can pull the design in opposite directions from "control over details". And it is not possible to be 100% compatible with two or more other implementations, when they are not compatible among themselves. Nevertheless, thought and concessions have been made toward all of these goals.