Adresse als ID
-
Hallo, ich stehe grad vor der Aufgabe, einem Haufen Daten ein paar Attribute zu verpassen. Ich dachte ich verwende assoziative Container / Attribut und für die braucht man ja bekannter Weise Schlüsselwerte. Was spricht dagegen, die Adressen meiner Daten als Schlüssel für die entspr. Attribute zu verwenden? Ich halte das momentan für eine ziemlich gute Idee.
-
kenne die daten nicht, wie wärs mit einer map wenn du zu einem wert einen schlüssel oä brauchst?
-
Hallo,
solange deine Daten innerhalb eines Prozesses bleiben ist eine map<PointerType, Irgendwas> ok.
-
@ajax: Ja, ich werde sicher eine Map einsetzen. (die Frage war ungenau formuliert, sorry; mir gings um die 'Zeiger als Schlüssel' Sache; trotzdem, danke.)
@HumeSikkins: Danke; das mit dem Prozessen war mir noch irgentwie im Hinterkopf, was genau ist eigentlich das Problem? Daten, auf die mehrere Prozesse zugreifen, sind doch global, oder?
Ein Problem, das mir noch aufgefallen ist: Speicherverwaltung (resizing, v.a. implizites) z.B. bei Vectors. Damit sollte die Reproduzierbarkeit des Schlüssels verloren gehen. Idee: Zeiger anstatt Daten speichern, is aber manchmal blöde (wenn ich z.B. die Daten kompakt halten will - ? sinnvoll ?). Wird irgentwo explizit beschrieben, welche Container verzeigerbare Elemente zulassen?
-
O_o schrieb:
@HumeSikkins: Danke; das mit dem Prozessen war mir noch irgentwie im Hinterkopf, was genau ist eigentlich das Problem? Daten, auf die mehrere Prozesse zugreifen, sind doch global, oder?
Verschiedene Prozesse haben unterschiedliche Adressräume - d.h. die Daten haben evt. unter Prozess1 eine andere Adresse als unter Prozess2
Ein Problem, das mir noch aufgefallen ist: Speicherverwaltung (resizing, v.a. implizites) z.B. bei Vectors. Damit sollte die Reproduzierbarkeit des Schlüssels verloren gehen. Idee: Zeiger anstatt Daten speichern, is aber manchmal blöde (wenn ich z.B. die Daten kompakt halten will - ? sinnvoll ?). Wird irgentwo explizit beschrieben, welche Container verzeigerbare Elemente zulassen?
Ja, die Container räumen gelegentlich ihre Elemente um - aber alle können Pointer oder Smart-Pointer statt der eigentlichen Daten speichern (Achtung: kein std::auto_ptr).
(PS: Wenn du mit der Komplexität leben kannst, kannst du auch list<> verwenden, die behält afaik die Position der Elemente bei)