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?
-
*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