Devolver matriz de la función C ++

Return Array From Function C



Las matrices son contenedores específicos que tienen valores del mismo tipo de datos. Las funciones en C ++ realizan operaciones en matrices, y estas matrices luego se devuelven a la función principal. Hay muchos enfoques para describir este fenómeno. En esta guía, se explican algunos métodos comunes:

Utilice punteros para devolver la matriz estática

Cuando usamos una matriz normal, existe la posibilidad de obtener algún tipo de resultados anormales. Para evitar esto, usamos una matriz estática en nuestro código C ++. Entendamos el ejemplo que hemos utilizado. En esta función, hemos declarado una matriz con 5 valores del tipo de retorno como se menciona aquí.







Función int * ()



Como el valor será un tipo entero, se etiquetará como int en el ejemplo siguiente. Como hemos introducido la función como puntero, la función será de tipo puntero. Después de ingresar los valores, se devuelve una matriz al programa principal.







En el programa principal, hemos realizado una llamada de función. Para aceptar el valor que devuelve la función, usaremos una variable entera. Cuando se devuelve la matriz, podemos acceder a sus valores fácilmente. Los valores se imprimirán manualmente.

En t*puntero=función();

El propósito del puntero es ubicar el elemento que está presente en el índice uno de la matriz. En otras palabras, muestra la dirección del valor en la matriz. Luego, usamos un prototipo de función que devolverá el puntero.



Para ver la salida de la matriz devuelta a través de la función, necesitamos tener acceso al terminal de Ubuntu en el caso de Linux. Esto se debe a que se puede acceder a la salida a través del terminal de Linux. En Linux, necesitamos un compilador para ejecutar códigos C ++ escritos en cualquier editor de texto. Esta compilación se realiza a través de G ++. El -o se utiliza para almacenar la salida en un archivo. Aquí, necesitamos el archivo de salida y el archivo de código fuente. Después de la compilación, ejecutaremos el código:

$g ++ -oarchivo1 archivo1.c
$ ./archivo1

Desde la salida, podemos ver que la matriz, que se inicializó en la función, se muestra en la función principal mediante el uso de una matriz estática, inicializada manualmente y mediante los punteros.

Devolver matriz asignada dinámicamente mediante punteros

Las matrices se pueden devolver mediante la asignación dinámica. Las matrices se pueden asignar dinámicamente utilizando la palabra nuevo. Permanecerán allí hasta que los eliminemos nosotros mismos. Las matrices estáticas tienen un tamaño fijo, lo que significa que debe proporcionar el tamaño durante la inicialización. Una vez que se crea la matriz, es difícil aumentar el tamaño en el tiempo de ejecución o en el futuro. Pero en el caso de la matriz dinámica, podemos agregar más elementos cuando queramos porque se expande a medida que ingresamos valores en ella. Por lo tanto, no necesitamos especificar ni identificar ningún tamaño.

Avanzando hacia el ejemplo que hemos usado aquí. Hemos utilizado una matriz dinámica con los punteros como en los ejemplos anteriores, donde hemos utilizado punteros con las matrices estáticas.

En t*función()

Después de la declaración de la función, las matrices se declaran dinámicamente:

En t*formación= nuevo En t [100];

El término nuevo se utiliza constantemente para crear una matriz dinámica. Realizaremos operaciones en la matriz ingresando valores en ella. Después de eso, la matriz se devuelve al programa principal:

Ahora, considere la función principal. Hemos realizado la llamada a la función. A medida que se devuelve la matriz, agregamos una variable de tipo entero de puntero para aceptar el valor.

En t*puntero=función();

Los valores que se almacenaron en la matriz se imprimen manualmente. La salida se obtiene mediante el método de compilación y ejecución.

Matriz de retorno utilizando las estructuras

Las estructuras son los contenedores como matrices. Pero la matriz contiene el valor del mismo tipo de datos a la vez. Y en el caso de las estructuras, contienen más de un valor de tipo de datos. Hemos tomado una estructura llamada muestra. Aquí, la declaración de la matriz está dentro de las estructuras en lugar de funciones. El tipo de retorno es el nombre de la estructura. La variable de estructura se devuelve al programa principal. La estructura usa la palabra estructura para la declaración.

Muestra de estructura
{
Int arr[100];
};

Después de la declaración de estructura, hemos utilizado una función en la que se crea un objeto de estructura. Este objeto se utilizará para acceder a la estructura. Esta función devolverá el objeto de estructura a la función principal para que podamos imprimir la matriz a través de este objeto. Una variable obtendrá los valores de la variable. Este valor es el número entero hasta el cual ingresaremos valores en la matriz. Como en este ejemplo, hemos seleccionado 6 como número. Entonces, los números se ingresarán hasta 6 en la matriz.

Función de muestra de estructura(En tnorte)

Ahora, moviéndonos hacia el programa principal, hemos creado un objeto para acceder a la matriz a través de esto:

Muestra de estructura x;

Después de la inicialización del objeto, se agrega un valor a la variable hasta la cual queremos que se ingresen los números en la matriz. En una llamada de función, pasaremos el valor en el parámetro:

X=función(norte);

Tendremos la pantalla usando el bucle for. Los valores se muestran a través del objeto declarado al inicio del programa principal:

La salida indica que se muestran 6 valores en el resultado ya que hemos ingresado 6 números en el programa.

Regresar matriz usando Std

C ++ usa muchos métodos para devolver una matriz de la función. Uno de ellos es a través de std :: array. Es una plantilla de estructura. Esta característica también proporciona dos funciones más que son size () y empty (). Se devuelve un nombre de matriz que indica que la matriz completa se devuelve al programa principal. Aquí, agregaremos una matriz de archivos de encabezado. Además de la biblioteca, contiene todas las funciones de la matriz.

#incluir

formación<En t,10>función()

Dado que podemos devolver la matriz completa con el nombre de la misma, en la declaración de una función, usaremos la matriz como un tipo de retorno. Los datos se ingresan en la matriz. Después de eso, la matriz volverá al programa principal. Moviéndose hacia la función principal, una variable de matriz aceptará la matriz cuando se llame a la función.

arr=función();

Una vez más, el bucle for se utilizará para mostrar los valores de la matriz. Observamos el resultado de la imagen que se muestra a continuación. Como hemos usado 10 tamaños, se ingresarán 0 números. Por lo tanto, estos se muestran:

Matriz de retorno a través del contenedor de vectores

Este enfoque es una matriz asignada dinámicamente. Como en este caso, no es necesario especificar el tamaño de la matriz. No necesitamos ningún parámetro de tamaño aquí. Usando este ejemplo, necesitamos agregar un encabezado de vector en la biblioteca que contiene las funcionalidades del vector.

Moviéndose hacia la función, donde el tipo de retorno también es un vector int y también contiene un puntero de vector como argumento en el parámetro. Aquí se introduce una matriz con el nombre temp:

Vector<En t>MultiplyArrayByTwo(constantevector<En t> *arr)

La función multiplicará los elementos de la matriz por dos mediante el uso de la función tmp.push_back (). Luego, devuelva el tmp. Una variable de tipo automático aceptará los valores de la matriz de la función. La matriz contiene los elementos que contiene.

La salida muestra el funcionamiento del contenedor de vectores.

Conclusión

En el artículo mencionado anteriormente, describimos los cinco métodos más utilizados para explicar la funcionalidad de devolver una matriz desde la función.