Returnează matricea din funcția C ++

Return Array From Function C



Tablourile sunt containere specifice care au valori de același tip de date. Funcțiile din C ++ efectuează operațiuni pe tablouri, iar aceste tablouri sunt apoi returnate la funcția principală. Există multe abordări pentru a descrie acest fenomen. În acest ghid, sunt explicate câteva metode comune:

Utilizați indicii pentru a returna matricea statică

Când folosim o matrice normală, există șanse să avem un fel de rezultate anormale. Pentru a evita acest lucru, folosim o matrice statică în codul nostru C ++. Să înțelegem exemplul pe care l-am folosit. În această funcție, am declarat o matrice cu 5 valori tipul de returnare așa cum am menționat aici.







Funcția Int * ()



Deoarece valoarea va fi un tip întreg, deci este etichetată ca int în exemplul de mai jos. Deoarece am introdus funcția ca un pointer, funcția va fi un tip de pointer. După introducerea valorilor, o matrice este returnată la programul principal.







În programul principal, am efectuat un apel funcțional. Pentru a accepta valoarea returnată din funcție, vom folosi o variabilă întreagă. Când matricea este returnată, putem accesa valorile sale cu ușurință. Valorile vor fi tipărite manual.

Int*indicator=funcţie();

Scopul indicatorului este de a localiza elementul care este prezent pe indexul unu din matrice. Cu alte cuvinte, arată adresa valorii din matrice. Apoi, folosim un prototip de funcție care va returna indicatorul.



Pentru a vedea ieșirea matricei returnată prin intermediul funcției, trebuie să avem acces la terminalul Ubuntu în cazul Linux. Acest lucru se datorează faptului că ieșirea este accesibilă prin terminalul Linux. În Linux, avem nevoie de un compilator pentru a rula coduri C ++ scrise în orice editor de text. Această compilare se face prin G ++. -O este folosit pentru a stoca ieșirea într-un fișier. Aici avem nevoie de fișierul de ieșire și fișierul codului sursă. După compilare, vom executa codul:

$g ++ -saufișier1 fișier1.c
$./file1

Din ieșire, putem vedea matricea, care a fost inițializată în funcție, este afișată în funcția principală utilizând o matrice statică, inițializată manual și prin pointeri.

Returnează matricea alocată dinamic folosind pointeri

Tablourile pot fi returnate utilizând alocarea dinamică. Tablourile pot fi alocate dinamic folosind cuvântul nou. Vor rămâne acolo până când le vom șterge singuri. Tablourile statice au dimensiuni fixe, ceea ce înseamnă că trebuie să furnizați dimensiunea în timpul inițializării. Odată ce matricea este creată, atunci este greu să creșteți dimensiunea în timpul rulării sau în continuare. Dar, în cazul matricei dinamice, putem adăuga mai multe articole ori de câte ori dorim, deoarece se extinde pe măsură ce introducem valori în ea. Deci nu este nevoie să specificăm sau să identificăm nicio dimensiune.

Trecând la exemplul pe care l-am folosit aici. Am folosit o matrice dinamică cu pointerele ca în exemplele anterioare, unde am folosit pointeri cu matricele statice.

Int*funcţie()

După declararea funcției, tablourile sunt declarate dinamic:

Int*matrice= nou int [100];

Termenul, nou, este folosit în mod constant pentru a crea o matrice dinamică. Vom efectua operațiuni pe tablou introducând valori în acesta. După aceea, matricea este returnată la programul principal:

Acum, ia în considerare funcția principală. Am făcut apelul funcției. Pe măsură ce matricea este returnată, adăugăm o variabilă de tip întreg cu pointer pentru a accepta valoarea.

Int*indicator=funcţie();

Valorile care au fost stocate în matrice sunt tipărite manual. Ieșirea este obținută prin metoda de compilare și execuție.

Return Array folosind structurile

Structurile sunt containerele precum matrici. Dar matricea conține valoarea aceluiași tip de date la un moment dat. Și în cazul structurilor, acestea conțin mai multe valori de tip date. Am luat o structură numită eșantion. Aici, declarația matricei se află în interiorul structurilor în loc de funcții. Tipul de returnare este numele structurii. Variabila structură este returnată la programul principal. Structura folosește cuvântul struct pentru declarație.

Eșantion struct
{
Int ar[100];
};

După declarația de structură, am folosit o funcție în care este creat un obiect de structură. Acest obiect va fi folosit pentru a accesa structura. Această funcție va readuce obiectul structurii la funcția principală, astfel încât să putem imprima matricea prin acest obiect. O variabilă va obține valorile din variabilă. Această valoare este numărul întreg până la care vom introduce valori în matrice. Ca și în acest exemplu, am selectat 6 ca număr. Deci, numerele vor fi introduse până la 6 în matrice.

Struct sample samples func(intn)

Acum, mergând spre programul principal, am creat un obiect pentru a accesa matricea prin aceasta:

Eșantion struct x;

După inițializarea obiectului, se adaugă o valoare variabilei până la care dorim ca numerele să fie introduse în matrice. Într-un apel de funcție, vom trece valoarea în parametrul:

X=func(n);

Vom avea afișajul folosind bucla for. Valorile sunt afișate prin obiectul declarat la începutul programului principal:

Rezultatul indică faptul că 6 rezultate sunt afișate în rezultat, deoarece am introdus 6 numere în program.

Returnare matrice folosind Std

C ++ folosește multe metode pentru a returna o matrice din funcție. Una dintre ele este prin std :: array. Este un șablon de structură. Această caracteristică oferă și alte două funcții care sunt size () și empty (). Se returnează un nume de matrice care indică faptul că întreaga matrice este returnată la programul principal. Aici vom adăuga o matrice de fișiere antet. Pe lângă bibliotecă, conține toate funcțiile matricei.

#include

matrice<int,10>funcţie()

Deoarece putem returna întregul tablou cu numele acestuia, deci în declarația unei funcții, vom folosi tabloul ca tip de returnare. Datele sunt introduse în matrice. După aceea, matricea va fi returnată la programul principal. Trecând la funcția principală, o variabilă de matrice va accepta matricea atunci când funcția este apelată.

arr=funcţie();

Din nou, bucla for va fi utilizată pentru afișarea valorilor matricei. Observăm ieșirea din imaginea afișată mai jos. Deoarece am folosit 10 dimensiuni, vor fi introduse 0 numere. Prin urmare, acestea sunt afișate:

Returnează matricea prin containerul vector

Această abordare este o matrice alocată dinamic. Ca și în acest caz, nu este nevoie să specificați dimensiunea matricei. Nu avem nevoie de niciun parametru de dimensiune aici. Folosind acest exemplu, trebuie să adăugăm un antet vector în bibliotecă care să conțină funcționalitățile vectorului.

Deplasarea către funcție, unde tipul de returnare este, de asemenea, un vector int și conține, de asemenea, un pointer vector ca argument în parametru. O matrice cu numele temp este introdusă aici:

Vector<int>MultiplyArrayByTwo(constvector<int> *arr)

Funcția va înmulți elementele matricei cu două prin utilizarea funcției tmp.push_back (). Apoi, întoarceți tmp. O variabilă de tip auto va accepta valorile matricei din funcție. Matricea conține elementele din ea.

Ieșirea arată funcționarea containerului vector.

Concluzie

În articolul menționat mai sus, am descris cele cinci metode cele mai frecvent utilizate pentru a explica funcționalitatea returnării unui tablou din funcție.