HAMT is close in behavior to std::hash_map. This permits using HAMT as the replacement for it in the existing code for performance gains. However, because public interfaces of different vendors for std::hash_map differ, you might encounter problems should your code depend on those differences. However, if your code doesn't override any map template parameters that have default values, replacement should be seamless. It's also possible to use HAMT instead of std::map, but only if your code doesn't depend on the iterator key ordering.

If your code uses heavy key-value mapping with long keys (longer than 32 symbols), then HAMT is a good choice of an associative container. std::hash_map would also fit well for such task, however, performance comparison shows advantage of HAMT over it.

std::map node from Microsoft has two char fields more than HAMT node. Depending on the alignment set, this could be 2, 8, 16 or more bytes. std::map node from STLPort has one field more, thus 1, 4, 8 or more bytes bigger. Thus, memory consumption of HAMT is of the same magnitude as of std::map.