I usually use C++ stdlib map whenever I need to store some data associated with a specific type of value (a key value - e.g. a string or other object). The stdlib map implem
If you're using C++11, you have access to the and headers. These provide classes std::unordered_map and std::unordered_set.
If you're using C++03 with TR1, you have access to the classes std::tr1::unordered_map and std::tr1::unordered_set, using the same headers (unless you're using GCC, in which case the headers are and instead).
In all cases, there are corresponding unordered_multimap and unordered_multiset types too.