I need to be able to store and lookup generic strings. I don't know much about the content of the strings, a little more then 2/3 are human language words with the rest being something closer to a UUID or number/letter combo. I know that any particular grouping will be constant (ie if it has some human words it will be all human words, if it has some UUID all the contents will be UUIDs etc).
I need to decide if I should place this data in a map or a hashmap to get the best average lookup rate. I'm inclined to say map with the O(log n) runtime because I don't believe I can make a proper efficient hash for strings when I know so little about their input format. Any thoughts as to which would be better?
EDIT: I forgot one key aspect. I don't know the length of the strings and so am concerned memory usage may grow too lage for long strings. If I used the hash method I would do something where after X characters the hash doesn't hash on a per-character basis to avoid the memory consumption being too huge.
What I would really like is a hash map implementation that keeps multuple values in the 'bucket' sorted in an ordered manaer so it can offer a (log N) search of the buckets; but I don't think that exists in stardrd C++ and it's not worth writeing from scratch.
pps. the data is near-static. which I'll occasionally have to add to the list it's rare and I'm willing to accept a slow write time. I only care about the lookup time.