Retorna la matriu des de la funció C ++

Return Array From Function C



Les matrius són contenidors específics que tenen valors del mateix tipus de dades. Les funcions de C ++ realitzen operacions en matrius, que després es tornen a la funció principal. Hi ha molts enfocaments per descriure aquest fenomen. En aquesta guia s’expliquen alguns mètodes habituals:

Utilitzeu els indicadors per retornar la matriu estàtica

Quan fem servir una matriu normal, hi ha possibilitats de tenir algun tipus de resultat anormal. Per evitar-ho, fem servir una matriu estàtica al nostre codi C ++. Comprenguem l’exemple que hem utilitzat. En aquesta funció, hem declarat una matriu amb 5 valors el tipus de retorn tal com s’esmenta aquí.







Funció int * ()



Com que el valor serà de tipus enter, per tant, s'etiqueta com a int a l'exemple següent. Com hem introduït la funció com a punter, la funció serà de tipus punter. Després d’introduir els valors, es torna una matriu al programa principal.







Al programa principal, hem fet una trucada de funció. Per acceptar el valor que es retorna de la funció, utilitzarem una variable sencera. Quan es retorna la matriu, podem accedir als seus valors fàcilment. Els valors s’imprimiran manualment.

Int*punter=funció();

L'objectiu del punter és localitzar l'element que es troba a l'índex un de la matriu. En altres paraules, mostra l'adreça del valor a la matriu. A continuació, fem servir un prototip de funció que retornarà el punter.



Per veure la sortida de la matriu retornada mitjançant la funció, hem de tenir accés al terminal Ubuntu en el cas de Linux. Això es deu a que la sortida és accessible a través del terminal Linux. A Linux, necessitem un compilador per executar codis C ++ escrits en qualsevol editor de text. Aquesta compilació es fa a través de G ++. El -o s'utilitza per emmagatzemar la sortida en un fitxer. Aquí necessitem el fitxer de sortida i el fitxer de codi font. Després de la compilació, executarem el codi:

$g ++ -ofitxer1 fitxer1.c
$./fitxer1

Des de la sortida, podem veure que la matriu, que es va inicialitzar a la funció, es mostra a la funció principal mitjançant una matriu estàtica, inicialitzada manualment i a través dels indicadors.

Retorna la matriu assignada dinàmicament mitjançant punteres

Les matrius es poden retornar mitjançant l'assignació dinàmica. Les matrius es poden assignar dinàmicament mitjançant la paraula nova. Hi romandran fins que els eliminem nosaltres mateixos. Les matrius estàtiques tenen una mida fixa, cosa que significa que heu de proporcionar mida durant la inicialització. Un cop creada la matriu, és difícil augmentar la mida en temps d'execució o en endavant. Però en el cas de la matriu dinàmica, podem afegir més elements sempre que vulguem perquè s’expandeix a mesura que hi introduïm valors. Per tant, no cal especificar ni identificar cap mida.

Avançant cap a l'exemple que hem utilitzat aquí. Hem utilitzat una matriu dinàmica amb els punters com en els exemples anteriors, on hem utilitzat punteres amb les matrius estàtiques.

Int*funció()

Després de la declaració de funció, les matrius es declaren dinàmicament:

Int*matriu= nou int [100];

El terme, nou, s’utilitza constantment per crear una matriu dinàmica. Realitzarem operacions a la matriu introduint-hi valors. Després, la matriu es torna al programa principal:

Ara, tingueu en compte la funció principal. Hem fet la trucada a la funció. A mesura que es retorna la matriu, afegim una variable de tipus enter de punter per acceptar el valor.

Int*punter=funció();

Els valors emmagatzemats a la matriu s’imprimeixen manualment. La sortida s’obté mitjançant el mètode de compilació i execució.

Return Array utilitzant les estructures

Les estructures són els contenidors com a matrius. Però la matriu conté el valor del mateix tipus de dades alhora. I en el cas de les estructures, contenen més d’un valor de tipus de dades. Hem pres una estructura anomenada sample. Aquí, la declaració de matriu es troba dins de les estructures en lloc de funcions. El tipus de retorn és el nom de l'estructura. La variable d’estructura es torna al programa principal. L'estructura utilitza la paraula struct per declarar.

Mostra estructural
{
Int arr[100];
};

Després de la declaració d’estructura, hem utilitzat una funció en la qual es crea un objecte d’estructura. Aquest objecte s'utilitzarà per accedir a l'estructura. Aquesta funció retornarà l'objecte de l'estructura a la funció principal perquè puguem imprimir la matriu mitjançant aquest objecte. Una variable obtindrà els valors de la variable. Aquest valor és el nombre enter fins al qual introduirem valors a la matriu. Com en aquest exemple, hem seleccionat 6 com a número. Per tant, els números s’introduiran fins a 6 a la matriu.

Funcions de mostra estruct(intn)

Ara, avançant cap al programa principal, hem creat un objecte per accedir a la matriu mitjançant això:

Mostra estructural x;

Després de la inicialització de l'objecte, s'afegeix un valor a la variable fins a la qual volem que s'introdueixin els números a la matriu. En una trucada de funció, passarem el valor al paràmetre:

X=funció(n);

Tindrem la pantalla utilitzant el bucle for. Els valors es mostren a través de l'objecte declarat al començament del programa principal:

La sortida indica que es mostren 6 valors al resultat, ja que hem introduït 6 números al programa.

Retorn de matriu amb la norma

C ++ utilitza molts mètodes per retornar una matriu des de la funció. Un d’ells és mitjançant std :: array. És una plantilla d’estructura. Aquesta característica també proporciona dues funcions més que són size () i empty (). Es torna un nom de matriu que indica que tota la matriu es torna al programa principal. Aquí afegirem una matriu de fitxers de capçalera. A més de la biblioteca, conté totes les funcions de la matriu.

#incloure

matriu<int,10>funció()

Com que podem retornar tota la matriu amb el seu nom, per tant, en la declaració d'una funció, utilitzarem la matriu com a tipus de retorn. Les dades s’introdueixen a la matriu. Després, la matriu es retornarà al programa principal. Avançant cap a la funció principal, una variable de matriu acceptarà la matriu quan es cridi la funció.

arr=funció();

Una vegada més, for loop s'utilitzarà per mostrar valors de matriu. Observem la sortida de la imatge que es mostra a continuació. Com que hem utilitzat 10 mides, s'introduiran 0 números. Per tant, es mostren:

Retorn de matriu mitjançant el contenidor vectorial

Aquest enfocament és una matriu assignada dinàmicament. Com en aquest cas, no cal especificar la mida de la matriu. Aquí no necessitem cap paràmetre de mida. Utilitzant aquest exemple, hem d’afegir una capçalera vectorial a la biblioteca que contingui les funcionalitats del vector.

Avançant cap a la funció, on el tipus de retorn també és un vector int i també conté un punter vectorial com a argument al paràmetre. Aquí s’introdueix una matriu amb el nom temp:

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

La funció multiplicarà els elements de la matriu per dos mitjançant la funció tmp.push_back (). A continuació, torneu el tmp. Una variable de tipus automàtic acceptarà els valors de la matriu de la funció. La matriu conté els elements.

La sortida mostra el funcionament del contenidor vectorial.

Conclusió

A l'article esmentat, hem descrit els cinc mètodes més utilitzats per explicar la funcionalitat de retornar una matriu de la funció.