Al fine di codificare un vettore in C ++, la libreria vettoriale deve essere inclusa nel programma. La libreria vettoriale ha la classe vettoriale da cui gli oggetti vettoriali possono essere istanziati (creati).
Il programma in cui sono tutti i campioni di codice di questo articolo, inizia con:
#includereViene utilizzato un vettore di stringhe.
Contenuto dell'articolo
- Vettore di ritorno con il normale nome vettoriale
- Restituire un vettore letterale
- Restituzione di un riferimento vettoriale
- Restituire un puntatore vettoriale
- Conclusione
Vettore di ritorno con il normale nome vettoriale
Lascia che il vettore di interesse sia:
vettoreIl vettore è un elenco di articoli in un piccolo negozio di alimentari. Il nome, archivio di questo vettore, deve essere inviato come argomento a una funzione, il cui parametro è un vettore, ma con il nome, VTR. La funzione di interesse può essere:
vettoreNotare il tipo di restituzione della definizione della funzione. Il nome del vettore è negozio. Questo è l'argomento per la chiamata della funzione. Il parametro per la funzione corrispondente al vettore è:
vettoreSi noti che l'argomento per la funzione e il nome del parametro sono diversi (possono essere comunque gli stessi). Non appena la funzione inizia l'esecuzione, viene fatta la seguente dichiarazione:
vettoreQuesta affermazione è equivalente alle seguenti due dichiarazioni:
vettoreE così, VTR è una copia del vettore, archivia. A questo punto, ci sono due vettori con lo stesso contenuto in memoria per il programma. Una funzione principale C ++ appropriata per il codice può essere:
int main ()Si noti che il negozio di parole, è l'argomento della chiamata di funzione. Quando viene chiamata la funzione, due copie dello stesso contenuto vettoriale si verificano in memoria. La funzione (chiamata) restituisce un vettore, che viene ricevuto da un altro vettore, V. Al termine del programma, ci sono tre vettori della stessa copia in memoria. Queste tre copie dello stesso contenuto possono essere ridotte a una copia utilizzando un vettore di riferimento o un vettore di punta. L'output per il programma sopra è:
pane, carne, riso, salsa di pomodoro, formaggio,
Restituire un vettore letterale
Oggi (nel 2022), un letterale vettoriale è lo stesso di un array letterale. Questo letterale è chiamato inizialezer_list, oggi in C++. Quindi, restituire un letterale vettoriale per una funzione, è lo stesso del restituzione di un inizializer_list. Lascia che inizi InitLializer_List:
"pane", "carne", "riso", "salsa di pomodoro", "formaggio"Lascia che la definizione della funzione restituisca l'inizializzatore,
vettoreInitializer_List è composto sul punto nell'istruzione di ritorno e restituito. La definizione della funzione non ha un parametro, ma ha lo stesso tipo di ritorno della sua controparte nella sezione precedente. Lascia che la funzione C ++ principale sia:
int main ()La chiamata della funzione, questa volta, non ha alcun argomento, ma il valore di restituzione è ricevuto dallo stesso vettore e dal tipo della sezione precedente.
Quando il programma sta completando, ci sarebbero due copie dello stesso vettore in memoria? NO. Ci sarebbe una sola copia, che è V. Initializer_List è una sorta di espressione, chiamata rvalue. Quando questo tipo di espressione non è più necessario in memoria, può essere cancellato da C ++ per avere più spazio di memoria? Non è importante se rimane in memoria dopo che è stato utilizzato mentre il programma continua a funzionare. Sarebbe cancellato se il suo spazio è necessario. L'output del programma è:
pane, carne, riso, salsa di pomodoro, formaggio,
Restituzione di un riferimento vettoriale
Il programma qui farà quello che ha fatto il primo programma sopra, ma solo con una copia dello stesso vettore. Tuttavia, ci saranno tre nomi diversi per lo stesso vettore. Lascia che il vettore di interesse sia:
vettoreNota la presenza e la posizione di e nel parametro. Significa che VTR è un vettore di riferimento (sinonimo) e non una copia dell'argomento da inviare. Nota la presenza e la posizione di e nel tipo di ritorno. Significa che il riferimento (sinonimo) di un vettore verrà restituito dalla funzione. Si noti che l'istruzione interna, "return vtr;" non ha &. Lascia che la funzione principale C ++ sia:
int main ()La firma della definizione della funzione e dell'istruzione chiamata funzione sono:
vettoreE
vettorerispettivamente. Nota di nuovo, la presenza e la posizione di &, nel tipo di ritorno della definizione della funzione. Nota la presenza e la posizione di e nell'istruzione chiamata funzione. L'argomento della chiamata della funzione è il nome ordinario del vettore, archivia. La funzione restituisce un riferimento ed è ricevuta da un puntatore, V.
E quindi, ci sono tre diverse variabili nel programma, tutte riferendosi alla stessa posizione di memoria vettoriale (la funzione restituita e VTR, che è sinonimo di Store). L'output è:
pane, carne, riso, salsa di pomodoro, formaggio,Restituire un puntatore vettoriale
Il programma qui farà quello che ha fatto il primo programma sopra, ma solo con una copia dello stesso vettore. Ci saranno tre nomi diversi per lo stesso vettore. Lascia che il vettore di interesse sia:
vettoreNota la presenza e la posizione di * nel parametro. Significa che VTR è un vettore del puntatore e non una copia di qualsiasi argomento vettoriale da inviare. Nota la presenza e la posizione di * nel tipo di ritorno. Ancora una volta, si noti che l'affermazione interna, "return vtr;" non ha & o *. Lascia che la funzione principale C ++ sia:
int main ()La firma della definizione della funzione e dell'istruzione chiamata funzione sono:
vettoreE
vettorerispettivamente. Nota la presenza e la posizione di * nel tipo di ritorno della definizione della funzione. Nota la presenza e la posizione di e nell'istruzione chiamata funzione; È di fronte all'argomento, al negozio e non di fronte a Fn (), che non ha & o *. La funzione restituisce un riferimento ed è ricevuta da un puntatore, V.
E così, ci sono tre diverse variabili nel programma, tutte riferendosi alla stessa posizione di memoria vettoriale. L'output è:
pane, carne, riso, salsa di pomodoro, formaggio,Conclusione
Una funzione può restituire un vettore con il suo nome normale. Una funzione può restituire un vettore letterale (inizializer_list), che deve essere ricevuto da un vettore normale (nome). Un vettore può restituire un riferimento vettoriale, che sarà ricevuto da un puntatore vettoriale. Un vettore può restituire un puntatore vettoriale, ancora da ricevere da un altro puntatore vettoriale.