C ++ stdmake_unique

C ++ stdmake_unique
En este artículo, discutiremos una función "make_unique" que proporciona la biblioteca de memoria. Se utiliza una biblioteca de memoria para definir utilidades para administrar la asignación de memoria y varias tareas en el montón de memoria. Antes de pasar a nuestro tema, debemos saber qué son los punteros únicos porque el uso de la función make_unique también incluye los punteros únicos también. Un puntero único es un puntero inteligente que tiene la propiedad de cualquier puntero pero no lo comparte con ningún otro puntero. La función make_unique es la forma más eficiente de inicializar el único_pointer y devuelve un puntero único a cualquier objeto que tenga un tipo especificado. Se introdujo en C ++ 14. Al usar la función Make_Unique para crear un tipo único de tipo de matriz, entonces tenemos que declarar los elementos de la matriz por separado.

Sintaxis:
La siguiente es la sintaxis del puntero Make_Unique:

plantilla unique_ptr make_unique (args);

En la sintaxis anterior, "Clase T" es el tipo al que el puntero único apuntará y "Args" denota el argumento que se pasará al constructor de cualquier objeto. Otro parámetro que a veces se pasa a esta función es el "tamaño" que se usa para asignar el montón de memoria a la cantidad de elementos que se le están pasando. El tipo de objeto para la función make_unique se pasa en los soportes de ángulo donde los valores a los que los puntos de puntero del objeto se pasan entre paréntesis.

Ejemplo # 01:

Realicemos un ejemplo en el que crearemos un objeto que imprima el mensaje para el usuario en la confirmación de si el make_unique se crea correctamente un unqiue_ptr o no. Ahora, incluidos los archivos de encabezado, el primero es la memoria y la segunda es el isotream. La memoria se utiliza para proporcionar las utilidades para administrar la asignación de memoria dinámica. El iOStream se usa para realizar varias operaciones de entrada-salida. Después de incluir nuestros archivos de encabezado, crearemos una clase llamada "Mkunique". Dentro de esta clase, creamos una función llamada "show ()". Para manejar la pantalla del mensaje en el objeto, llame usando el puntero make_unique.

El método show () se llamará utilizando el puntero único que hemos declarado dentro de nuestra función principal. Ahora, procediendo a la función principal donde inicializamos un puntero único "P" de tipo y clase "Mkunique" a la que asignamos una función miembro Make_Unique del tipo "Mkunique". Después de eso utilizando ese puntero "P", llamaremos al método show () utilizando el operador "->" que se utiliza para acceder a la función de la clase de objeto usando punteros.

#incluir
#incluir
Clase Mkunique

público:
show void ()

std :: cout

Vamos a ver nuestra salida en la que el mensaje se muestra correctamente. Esto significa que podemos crear un puntero único utilizando la función miembro make_unique.

Ejemplo # 02:

Ahora, realizaremos otro ejemplo en el que crearemos una matriz usando un puntero inteligente y obtendremos los valores que se pasan en él. Después de incluir nuestros archivos de encabezado, como estaban en el ejemplo anterior, el archivo iOStream y el archivo de encabezado de memoria nos sumergiremos en nuestra función principal. Hemos declarado un puntero automático "mk_unique", un auto es un tipo de datos que se utiliza para declarar una variable de tipo de puntero. Al mk_unique, asignamos la función miembro "make_unique" de la matriz de tipos, donde "8" es el tamaño de la matriz. Significa que la variable mk_unique ahora es un puntero único que manejará la matriz de tamaño inferior a "8".

A continuación, usando el bucle for, vamos a almacenar los valores en nuestra matriz utilizando la variable "k". El bucle for se inicia desde "0" y termina en el valor "7". Comenzará de 0 a menos de 8 hasta que se cumpla el último índice. Ejecutará el código interno con el incremento de 1. Dentro del bucle for, asignamos "k" al puntero que almacenará los valores en el montón de memoria. Y luego, utilizando la instrucción "Cout", mostramos estos valores utilizando el puntero Make_Unique "MK_UNIQUE".

#incluir
#incluir
int main ()

auto mk_unique = std :: make_unique(8);
para (int k = 0; k < 8; ++k)

mk_unique [k] = k;
std :: cout << mk_unique[k] << std::endl;

Como se muestra en el fragmento a continuación, los valores que pasamos a la matriz de puntero imprimieron los valores de 1 a 7 porque el índice de matriz comienza de 0, por lo que de 0 a 7 almacena los valores que pasamos usando el bucle for 1 a 7. Cuando el bucle comienza por primera vez, verificará la condición de si K es inferior a "8" o no. Luego, ejecuta el valor que se almacena en el índice 0, que es 1. Después de eso, lo incrementará en 1 y así sucesivamente hasta que la condición sea falsa.

Ejemplo # 03:

Ahora, intentaremos una manera sencilla de crear un puntero único usando la función miembro make_unique. Luego, imprimiremos el valor usando el puntero que creamos. Primero incluyamos archivos de encabezado y luego diríjase hacia nuestra función principal en la que hemos declarado un puntero único llamado "P" de tipo entero. Esto significa que mantendrá el valor de tipo entero. A ese puntero, asignamos un puntero del tipo de entero Make_unique al que pasamos el valor "123" como un argumento que se almacenará en el montón de memoria. Al final, hemos mostrado el valor que se almacena en la memoria usando "*P", lo que significa que mostrará el valor del puntero único "P", Asterisk "*" se usa para acceder al puntero.

#incluir
#incluir

std :: unique_ptr p = std :: make_unique(123);
std :: cout << *p;

Como se muestra en la figura debajo de la salida del código realizado anteriormente, se muestra. Mostramos el valor del puntero único "P" que fue "123" sin tener ningún error.

Conclusión

En esta guía, hemos explicado los métodos de cómo se utiliza la función miembro make_unique para crear un único_pointer. Make_unique es la forma más efectiva de declarar un puntero de un tipo único, estos punteros se destruyen cada vez que sale del alcance. Make_unique es la forma más segura de crear una ubicación de memoria temporal en el montón de memoria.