I think that this has been discussed previously, but a long time ago, and I think that it might be worth discussing again. Currently, Simutrans has a hashtable template. However, unlike many hashtables, this hashtable has a somewhat inefficient means of looking things up and is no faster at returning a value from a key than, say, searching a vector or singly linked list for a particular value - if I recall correctly, it iterates through all items until it finds something matching.
A more conventional hashtable implementation, if I understand it correctly, has a very high speed algorithm for matching key/value pairs. Unless I have misunderstood something, therefore, there would be something to gain from using a more conventional hashtable implementation in Simutrans - perhaps from the std templates, if there is one? Or am I missing some important piece of information that is a good reason for retaining the existing model.
It is perhaps noteworthy that Experimental uses hashtable lookups rather more than Standard, for example, for storing cached routing information for goods, so it might be that a different strategy is optimum in each case, or even, conceivably, that it might make sense to use a standard hashtable class for some things and the existing hashtable implementation for others.
I should be interested in any words of wisdom from those more familiar with the low level innards of the code than I on the subject.