Element in vector veraendern
-
Hallo,
ich habe einen std::vector<Foo> myVec und will das 2. Element im Vektor direkt veraendern. Sehe ich das richtig, dass ich dazu 2 Moeglichkeiten habe:
Foo* f1 = &myVec[i]; oder: fi->bar = ... Foo& f2 = myVec[i]; f2.bar = ...Stimm das? Die 2. Methode ist zu bevorzugen, oder?
-
Bist du des Wahnsinns? Warum nicht
myvec[i].bar = ...?
-
Weil ich zig Elemente veraendern muss und nicht jedesmal dereferenzieren will?
-
Aenderungswilliger schrieb:
Weil ich zig Elemente veraendern muss und nicht jedesmal dereferenzieren will?
Und was meinst, passiert beim Pfeiloperator, oder wenn Du über eine Referenz zugreifst?
-
Aenderungswilliger schrieb:
Foo* f1 = &myVec[i]; oder: fi->bar = ... Foo& f2 = myVec[i]; f2.bar = ...Stimm das?
So kann man das machen, ja.
Aenderungswilliger schrieb:
Die 2. Methode ist zu bevorzugen, oder?
Auf Maschinenebe macht es keinen Unterschied mehr. Ich mache es, wenn überhaupt, meist mit Referenzen.
-
Tachyon schrieb:
Aenderungswilliger schrieb:
Weil ich zig Elemente veraendern muss und nicht jedesmal dereferenzieren will?
Und was meinst, passiert beim Pfeiloperator, oder wenn Du über eine Referenz zugreifst?
Exakt das selbe, nur sieht es im Code syntaktisch schoener aus, wenn zig mal
f2.bar steht anstatt myVec[i].bar =
Ausserderm ist ersteres nur eine Dereferenzierung, letzteres u.U. eine Dereferenzierung UND Funktionsaufruf.
-
Pass nur auf dass du nichts einfügst/löscht während du die Referenz hältst.