C ++ stdmake_unique

C ++ stdmake_unique
In questo articolo, discuteremo di una funzione "make_unique" fornita dalla libreria di memoria. Una libreria di memoria viene utilizzata per definire le utility per la gestione dell'allocazione della memoria e varie attività nel mucchio di memoria. Prima di passare al nostro argomento, dovremmo sapere quali sono i puntatori unici perché l'uso della funzione make_unique include anche i puntatori unici. Un puntatore unico è un puntatore intelligente che ha la proprietà di qualsiasi puntatore ma non lo condivide con nessun altro puntatore. La funzione make_unique è il modo più efficiente di inizializzare l'UNICE_POINTER e restituisce un puntatore unico a qualsiasi oggetto che abbia un tipo specificato. È stato introdotto in C ++ 14. Quando si utilizza la funzione make_unique per creare un unico tipo di array, dobbiamo dichiarare separatamente gli elementi dell'array.

Sintassi:
Di seguito è la sintassi del puntatore Make_Unique:

modello univoco_ptr make_unique (args);

Nella sintassi sopra "Classe T" è il tipo a cui verrà puntato il puntatore unico e "Args" indica l'argomento che deve essere passato al costruttore di qualsiasi oggetto. Un altro parametro che a volte viene passato a questa funzione è "dimensione" che viene utilizzato per allocare il mucchio di memoria al numero di elementi che vengono passati ad esso. Il tipo di oggetto per la funzione make_unique viene passato tra parentesi angolari in cui i valori a cui i punti del puntatore dell'oggetto vengono passati nella parentesi.

Esempio # 01:

Eseguiamo un esempio in cui creeremo un oggetto che stampa il messaggio per l'utente nella conferma se la make_unique viene creata correttamente un Unqiue_ptr o no. Ora, compresi i file di intestazione, il primo è la memoria e il secondo è l'isotream. La memoria viene utilizzata per fornire le utility per la gestione dell'allocazione della memoria dinamica. L'iostream viene utilizzato per eseguire varie operazioni di input-output. Dopo aver incluso i nostri file di intestazione, creeremo una classe chiamata "Mkunique". All'interno di questa classe, creiamo una funzione denominata "show ()". Per gestire il display del messaggio sull'oggetto, chiamare usando il puntatore Make_Unique.

Il metodo Show () verrà chiamato usando il puntatore unico che abbiamo dichiarato all'interno della nostra funzione principale. Ora, procedendo alla funzione principale in cui abbiamo inizializzato un puntatore unico "P" della classe di tipo e "mkunique" a cui abbiamo assegnato una funzione membro make_unique di tipo "mkunique". Dopodiché utilizzando quel puntatore "P", chiameremo il metodo show () usando l'operatore "->" che viene utilizzato per accedere alla funzione della classe oggetto usando i puntatori.

#includere
#includere
Classe mkunique

pubblico:
void show ()

std :: cout

Vediamo il nostro output in cui il messaggio viene visualizzato correttamente. Ciò significa che possiamo creare un puntatore unico usando la funzione membro make_unique.

Esempio # 02:

Ora eseguiremo un altro esempio in cui creeremo un array usando un puntatore intelligente e otterremo i valori che vengono passati in esso. Dopo aver incluso i nostri file di intestazione, come nell'esempio sopra, l'iostream e il file di intestazione della memoria ci immergeremo nella nostra funzione principale. Abbiamo dichiarato un puntatore automatico "mk_unique", un auto è un tipo di dati che viene utilizzato per dichiarare una variabile di tipo puntatore. A MK_Unique, abbiamo assegnato la funzione membro "make_unique" dell'array di tipo, in cui "8" ha la dimensione dell'array. Significa che la variabile mk_unique è ora un puntatore unico che gestirà l'array di dimensioni inferiori a "8".

Successivamente, usando il loop, memorizzeremo i valori nel nostro array usando la variabile "k". Il loop per "0" e termina al valore "7". Inizierà da 0 a meno di 8 fino all'ultimo indice. Eseguirà il codice interno con l'incremento di 1. All'interno del ciclo per, abbiamo assegnato "k" al puntatore che memorizzerà i valori nel mucchio di memoria. E quindi usando l'istruzione "Cout", abbiamo visualizzato questi valori usando il puntatore Make_Unique "MK_Unique".

#includere
#includere
int main ()

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

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

Come mostrato nello snippet di seguito, i valori che abbiamo passato all'array puntatore stampano i valori da 1 a 7 perché l'indice dell'array inizia da 0, quindi da 0 a 7 memorizza i valori che abbiamo superato usando il loop è da 1 a 7. Quando il ciclo inizia per la prima volta, controllerà la condizione se k è inferiore a "8" o no. Quindi, esegue il valore che viene archiviato nell'indice 0 che è 1. Dopodiché, lo increverà di 1 e così via fino a quando la condizione è falsa.

Esempio # 03:

Ora proveremo un modo semplice per creare un puntatore unico usando la funzione membro make_unique. Quindi, stamperemo il valore usando il puntatore che creeremo. Includiamo innanzitutto i file di intestazione, quindi ci dirigi verso la nostra funzione principale in cui abbiamo dichiarato un puntatore unico chiamato "p" di tipo intero. Ciò significa che manterrà il valore del tipo intero. A quel puntatore, abbiamo assegnato un puntatore make_unique del tipo intero a cui abbiamo superato il valore "123" come argomento che verrà archiviato nel mucchio di memoria. Alla fine, abbiamo visualizzato il valore che viene memorizzato nella memoria usando "*P", il che significa che visualizzerà il valore del puntatore unico "P", l'asterisco "*" viene utilizzato per accedere al puntatore.

#includere
#includere

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

Come mostrato nella figura sotto l'uscita del codice eseguito sopra. Abbiamo visualizzato il valore del puntatore unico "P" che era "123" senza alcun errore.

Conclusione

In questa guida, abbiamo spiegato i metodi di come viene utilizzata la funzione membro make_unique per creare un unico_pointer. Make_unique è il modo più efficace per dichiarare un puntatore di un tipo unico, questi puntatori vengono distrutti ogni volta che si spostano fuori dall'ambito. Make_unique è il modo più sicuro per creare una posizione di memoria temporanea nel mucchio di memoria.