Hallo
Ich muss irgendwie eine Zuordnung realisieren, wobei als Schlüssel ein Vektor von drei Ganzzahlen vorliegt.
Wie mache ich das ambesten?
Die naheliegendste Lösung, namentlich std::map<Vector3<int>,void*> gefällt mir damit nicht, dass hier der Vergleichsoperator von Vector3<int> herangezogen wird, wodurch ein Lookup in der Map ziemlich langsam wird, da die Schlüssel nicht sortiert werden können.
Ich habe überlegt, drei Maps anzulegen. Aber das wäre alles andere als schön und es muss doch eine elegantere Lösung geben.
Andere Möglichkeit wäre, als Schlüssel einen 12 Byte breiten Integer zu verwenden, falls das überhaupt geht.
Allerdings gefällt mir hier nicht, dass man die Breite des Integers quasi hardcoden muss.
Dadurch wird es nicht mehr so leicht möglich, den Komponententyp des Vector3 von int auf etwas anderes zu wechseln.
Möglicherweise wäre es die beste Lösung, einen Hashcode für die Vektoren zu berechnen.
Da wiederum fehlt mir aber ein gescheiter Ansatz für einen vernünftigen Algorithmus.
Weiß jemand etwas?
Danke im Voraus
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »the[V]oid« (05.07.2010, 15:52)