vector von pointern: Index eines Elementes bestimmen
-
Hallo,
vector<MyClass> myvector; // dann eine Funktion, die den Index berechnet int getIndex(MyClass *m) return (m - &myvector[0]);
Lässt sich dies auch auf Pointer übertragen ?
vector<MyClass*> myvector; // dann eine Funktion, die den Index berechnet int getIndex(MyClass *m) return (&m - &myvector[0]);
funktioniert leider nicht.
-
ich frage mich, wieso überhaupt die erste funktion funktioniert:
int getIndex(MyClass *m) return (m - &myvector[0]);
dass muss so aussehen:
int getIndex(MyClass *m){//geschweifte klammer auf return m - &myvector[0]; }//geschweifte klammer zu
dann muss die andre version folglich so aussehen:
int getIndex(MyClass *m){//geschweifte klammer auf return &m - &myvector[0]; }//geschweifte klammer zu
-
otze: Das ist hier sicher keine banale Syntaxfrage!
Die analoge Form zur ersten Funktion wäre so:
int getIndex(MyClass **m){ return m - &myvector[0]; }
Funktioniert exakt genauso, über die Sinnfälligkeit läßt sich sicher (bei beiden Formen) noch das eine oder andere Wort verlieren, aber dazu enthält das Ursprungsposting zu wenig Daten.
-
Ja, genauso hab ich es, aber mit den Pointern funkts irgendwie nicht.
-
die 2. version die ich gepostet hab funktioniert
-
Nie. Du gibst ja die Adressdifferenz zwischen einem Objekt auf dem Stack und dem Anfang des Vektors (auf dem Heap) zurück.