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.


Anmelden zum Antworten