Gå til innhold

[Løst]Trenger hjelp med fjerning av elementer i en vector.


Anbefalte innlegg

Alle operatører skal ideelt returnere en kopi (noe du påpekte for noe kode jeg skrev som returnerte en referanse)

Eneste forskjellen skal være verdien i kopien.

 

++2 = 3

2++ = 2

Uavhengig av om operatorene returnerer en kopi eller referanse, må postinkrement uansett lage en kopi av opprinnelig verdi, inkrementere seg selv, og returnere kopien. Selv om preinkrement returnerer en kopi istedenfor en referanse, slipper den jo da uansett unna med en kopiering mindre.

 

I C++ er det generellt ansett å være "good practice" å bruke prefix-operatorene der det ikke spiller noen rolle hva man bruker.

Lenke til kommentar
Videoannonse
Annonse
Alle operatører skal ideelt returnere en kopi (...)

Eneste forskjellen skal være verdien i kopien.

 

Preinkrement: "The value is the new value of the operand; it is an lvalue"

Postinkrement: "The result is an rvalue".

 

Preinkrement kan brukes som argument dersom funksjonen for den korresponderende formelle parameteren forventer en T&. Postinkrement kan ikke brukes i den konteksten. Det er nok litt flere forskjeller enn bare hvilken verdi blir returnert.

 

Postinkrement *må* returnere en kopi i en kontekst der den returnerte verdien blir brukt. Preinkrement kan returnere en T& (jeg vet faktisk ikke om preinkrement er tillatt til å returnere en kopi).

 

++2 = 3

2++ = 2

 

Mitt første spørsmål til dette var "hmm, returnerer preinkrement en modifiable lvalue da?" før jeg innså at "=" betyr "er lik", ikke "settes til" i denne konteksten ;D

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...