For å kode en vektor i C ++, må vektorbiblioteket inkluderes i programmet. Vektorbiblioteket har vektorklassen som vektorobjekter kan bli instantiert fra (opprettet).
Programmet der alle kodeprøvene i denne artikkelen er, begynner med:
#inkludereEn vektor av strenger brukes.
Artikkelinnhold
- Returnerende vektor med normalt vektornavn
- Returnerer en vektor bokstavelig
- Returnerer en vektorreferanse
- Returnerer en vektorpeker
- Konklusjon
Returnerende vektor med normalt vektornavn
La interessen av interesse være:
vektorVektoren er en liste over elementer i en liten matbutikk. Navnet, lagring av denne vektoren, skal sendes som et argument til en funksjon, hvis parameter er en vektor, men med navnet VTR. Funksjonen av interesse kan være:
vektorLegg merke til returtypen for funksjonsdefinisjonen. Navnet på vektoren er butikk. Dette er argumentet for funksjonssamtalen. Parameteren for funksjonen som tilsvarer vektoren er:
vektorMerk at argumentet for funksjonen og parameternavnet er forskjellige (de kan fortsatt være de samme). Så snart funksjonen begynner å utføre, blir følgende uttalelse fremsatt:
vektorDenne uttalelsen tilsvarer følgende to uttalelser:
vektorOg så er VTR en kopi av vektoren, butikk. På dette tidspunktet er det to vektorer med samme innhold i minnet for programmet. En passende C ++ hovedfunksjon for koden kan være:
int main ()Legg merke til at ordbutikken er argumentet for funksjonssamtalen. Når funksjonen kalles, oppstår to kopier av det samme vektorinnholdet i minnet. Funksjonen (samtale) returnerer en vektor, som mottas av en annen vektor, v. Når programmet er ferdig, er det tre vektorer av samme kopi i minnet. Disse tre kopiene av det samme innholdet kan reduseres til en kopi ved å bruke en referansevektor, eller pekervektor. Utgangen for programmet ovenfor er:
brød, kjøtt, ris, tomatsaus, ost,
Returnerer en vektor bokstavelig
I dag (i 2022) er en vektor bokstavelig den samme som en gruppe bokstavelig. Denne bokstavelige kalles en initializer_list, i dag i C++. Så å returnere en vektor bokstavelig av en funksjon, er det samme som å returnere en initializer_list. La initlializer_list være:
"brød", "kjøtt", "ris", "tomatsaus", "ost"La funksjonsdefinisjonen for å returnere initializer_listen være,
vektorInitializer_list er sammensatt på stedet i returerklæringen, og returnerte. Funksjonsdefinisjonen har ingen parameter, men har samme returtype som motstykket i forrige seksjon. La hoved C ++ -funksjonen være:
int main ()Funksjonsanropet, denne gangen, har ikke noe argument, men returverdien mottas av samme vektor og type forrige seksjon.
Når programmet er fullført, ville det være to eksemplarer av samme vektor i minnet? Nei. Det ville bare være en kopi, som er v. Initializer_list er et slags uttrykk, kalt en rvalue. Når denne typen uttrykk ikke lenger er nødvendig i minnet, kan det slettes av C ++ for å ha mer minneplass? Det er ikke viktig om det forblir i minnet etter at det har blitt brukt mens programmet fortsetter å løpe. Det vil bli slettet hvis plassen er nødvendig. Programutgangen er:
brød, kjøtt, ris, tomatsaus, ost,
Returnerer en vektorreferanse
Programmet her vil gjøre det det første programmet ovenfor har gjort, men bare med en kopi av samme vektor. Det vil være tre forskjellige navn for samme vektor, skjønt. La interessen av interesse være:
vektorLegg merke til tilstedeværelsen og plasseringen av og i parameteren. Det betyr at VTR er en referert (synonym) vektor, og ikke en kopi av argumentet som skal sendes. Legg merke til tilstedeværelsen og plasseringen av og i returtypen. Det betyr at referansen (synonym) til en vektor vil bli returnert av funksjonen. Legg merke til at den indre uttalelsen, "Returner VTR;" har ikke &. La C ++ hovedfunksjon være:
int main ()Signaturen til funksjonsdefinisjonen, og funksjonsanropserklæringen, er:
vektorog
vektorhenholdsvis. Legg merke til igjen, tilstedeværelsen og plasseringen av &, i returtypen av funksjonsdefinisjonen. Legg merke til tilstedeværelsen og plasseringen av og i funksjonsanropserklæringen. Argumentet til funksjonssamtalen er det vanlige navnet på vektoren, butikk. Funksjonen returnerer en referanse, og den mottas av en peker, v.
Og så, det er tre forskjellige variabler i programmet, som alle refererer til samme vektorminneplassering (funksjonen returnerte & VTR, som er et synonym for butikk). Utgangen er:
brød, kjøtt, ris, tomatsaus, ost,Returnerer en vektorpeker
Programmet her vil gjøre det det første programmet ovenfor har gjort, men bare med en kopi av samme vektor. Det vil være tre forskjellige navn for samme vektor. La interessen av interesse være:
vektorLegg merke til tilstedeværelsen og plasseringen av * i parameteren. Det betyr at VTR er en pekervektor, og ikke en kopi av noe vektorargument som skal sendes. Legg merke til tilstedeværelsen og plasseringen av * i returtypen. Merk igjen at den indre uttalelsen, "Returner VTR;" har ikke & eller *. La C ++ hovedfunksjon være:
int main ()Signaturen til funksjonsdefinisjonen, og funksjonsanropserklæringen, er:
vektorog
vektorhenholdsvis. Legg merke til tilstedeværelsen og plasseringen av * i returtypen for funksjonsdefinisjonen. Legg merke til tilstedeværelsen og plasseringen av og i funksjonsanropserklæringen; Det er foran argumentet, lagring og ikke foran fn (), som ikke har & eller *. Funksjonen returnerer en referanse, og den mottas av en peker, v.
Og så, det er tre forskjellige variabler i programmet, som alle refererer til samme vektorminneplassering. Utgangen er:
brød, kjøtt, ris, tomatsaus, ost,Konklusjon
En funksjon kan returnere en vektor med normalt navn. En funksjon kan returnere en vektor bokstavelig (initializer_list), for å bli mottatt av en normal vektor (navn). En vektor kan returnere en vektorreferanse, for å bli mottatt av en vektorpeker. En vektor kan returnere en vektorpeker, fremdeles for å bli mottatt av en annen vektorpeker.