Pointer auf vector, wie den []-operator anwenden?



  • Hi,

    ich hab folgenden parameter:

    std::vector<int>* vec

    Wie kann ich auf die Elemente von vec zugreifen ohne vec->at(i) zu benutzen, also mit dem []-operator?


  • Mod

    *vec[i]



  • ah ok, nochmal geklammert dann gings (*vec)[i]



  • vecotiraner schrieb:

    ah ok, nochmal geklammert dann gings (*vec)[i]

    entweder so oder
    vec->operator[](i)
    dadurch, dass der *-operator so ne niedrige Priorität hat, muss man ihn noch mal klammern - und das find ich extrem hässlich, aber ist wohl sehr subjektiv...
    was auch gehen würde:
    std::vector<int> &v = *vec;
    v[i]

    bb



  • unskilled schrieb:

    was auch gehen würde:
    std::vector<int> &v = *vec;
    v[i]

    gehen würde vieles:

    (&vec->front())[i];
    *(vec->begin()[i]);
    //uvm. :D
    

    Die Frage ist eher ob es wirklich nötig ist, den vector mittels Pointer herumzureichen und nicht per Referenz.

    unskilled schrieb:

    dadurch, dass der *-operator so ne niedrige Priorität hat, muss man ihn noch mal klammern - und das find ich extrem hässlich, aber ist wohl sehr subjektiv...

    Die Priorität ist alles andere als niedrig - op* hat die dritthöchste Priorität - nur ist op[] eben noch eins höher.



  • Bzgl Priorität kann man sich gut merken, dass die Postfix-Operatoren alle eine höhere Priorität besitzen als Präfixoperatoren. Assoziativität ist jeweils "von innen nach außen".

    **p[1][2] --> *(*((p[1])[2]))

    Gruß,
    SP



  • pumuckl schrieb:

    gehen würde vieles:

    (&vec->front())[i];
    *(vec->begin()[i]);
    //uvm. :D
    

    Ich hatte nicht vor, alle Möglichkeiten aufzuzählen, sondern nur die, die m.E. übersichtlicher sind - die beiden gehören eher nicht dazu^^

    bb


Anmelden zum Antworten