C ++ stdmake_unique

C ++ stdmake_unique
Dans cet article, nous discuterons d'une fonction «Make_Unique» qui est fournie par la bibliothèque de mémoire. Une bibliothèque de mémoire est utilisée pour définir les services publics pour gérer l'allocation de la mémoire et diverses tâches dans le tas de mémoire. Avant de passer à notre sujet, nous devons savoir ce que sont les pointeurs uniques parce que l'utilisation de la fonction Make_Unique comprend également les pointeurs uniques également. Un pointeur unique est un pointeur intelligent qui possède la propriété de tout pointeur mais ne le partage avec aucun autre pointeur. La fonction Make_Unique est le moyen le plus efficace d'initialiser le_pointer unique et il renvoie un pointeur unique à tout objet qui a un type spécifié. Il a été introduit dans C ++ 14. Lorsque vous utilisez la fonction Make_Unique pour créer un_pointer unique du type de tableau, nous devons déclarer séparément les éléments du tableau.

Syntaxe:
Ce qui suit est la syntaxe du pointeur Make_Unique:

modèle unique_ptr make_unique (args);

Dans la syntaxe ci-dessus, la «classe T» est le type auquel le pointeur unique pointera et «args» désigne l'argument qui doit être transmis au constructeur de tout objet. Un autre paramètre qui est parfois transmis à cette fonction est la «taille» qui est utilisée pour allouer le tas de mémoire au nombre d'éléments qui y sont transmis. Le type de l'objet pour la fonction Make_Unique est passé sous des crochets d'angle où les valeurs auxquelles le pointeur objet pointe les points de parentalité.

Exemple # 01:

Perdons un exemple dans lequel nous créerons un objet qui imprimera le message pour l'utilisateur dans la confirmation de savoir si le make_unique est créé avec succès un unqiue_ptr ou non. Maintenant, y compris les fichiers d'en-tête, le premier est la mémoire et le second est l'isotream. La mémoire est utilisée pour fournir les services publics pour gérer l'allocation de mémoire dynamique. L'iOStream est utilisé pour effectuer diverses opérations d'entrée-sortie. Après avoir inclus nos fichiers d'en-tête, nous créerons une classe nommée «Mkuninique». À l'intérieur de cette classe, nous créons une fonction nommée «Show ()». Pour gérer l'affichage du message sur l'objet, appelez à l'aide du pointeur Make_Unique.

La méthode show () sera appelée en utilisant le pointeur unique que nous avons déclaré dans notre fonction principale. Maintenant, passant à la fonction principale où nous avons initialisé un pointeur unique «P» de type et de classe «Mkuninique» à laquelle nous avons attribué un membre Make_Unique Fonction de type «Mkunique». Après cela en utilisant ce pointeur «P», nous appellerons la méthode Show () à l'aide de l'opérateur «->» qui est utilisé pour accéder à la fonction de la classe d'objets à l'aide de pointeurs.

#inclure
#inclure
MKUnique de classe

public:
void show ()

std :: cout

Voyons notre sortie dans laquelle le message est affiché avec succès. Cela signifie que nous pouvons créer un pointeur unique en utilisant la fonction de membre Make_Unique.

Exemple # 02:

Maintenant, nous allons effectuer un autre exemple dans lequel nous créerons un tableau à l'aide d'un pointeur intelligent et obtiendrons les valeurs qui y sont passées. Après avoir inclus nos fichiers d'en-tête, comme dans l'exemple ci-dessus, l'iOStream et le fichier d'en-tête de mémoire, nous plongerons dans notre fonction principale. Nous avons déclaré un pointeur automatique «MK_Unique», une auto est un type de données qui est utilisé pour déclarer une variable de type pointeur. Pour le MK_Unique, nous avons attribué à la fonction «Make_Unique» du tableau de type, où «8» est la taille du tableau. Cela signifie que la variable MK_Unique est désormais un pointeur unique qui gérera le tableau de taille inférieur à «8».

Ensuite, en utilisant la boucle FOR, nous allons stocker les valeurs de notre tableau en utilisant la variable «K». La boucle pour «0» et se termine à la valeur «7». Il commencera de 0 à moins de 8 jusqu'à ce que le dernier index soit rempli. Il exécutera le code intérieur avec l'incrément de 1. À l'intérieur de la boucle FOR, nous avons attribué «K» au pointeur qui stockera les valeurs dans le tas de mémoire. Et puis en utilisant l'instruction «cout», nous avons affiché ces valeurs en utilisant le pointeur Make_Unique «MK_Unique».

#inclure
#inclure
int main()

Auto Mk_Unique = STD :: Make_Unique(8);
pour (int k = 0; k < 8; ++k)

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

Comme indiqué dans l'extrait ci-dessous, les valeurs que nous avons transmises au tableau de pointeur ont imprimé les valeurs de 1 à 7 car l'index du tableau commence à partir de 0, donc de 0 à 7 stocke les valeurs que nous avons transmises en utilisant la boucle pour 1 à 7. Lorsque la boucle commence pour la première fois, elle vérifiera la condition si k est inférieur à «8» ou non. Ensuite, il exécute la valeur stockée dans l'index 0 qui est 1. Après cela, il l'incrémentera de 1 et ainsi de suite jusqu'à ce que la condition soit fausse.

Exemple # 03:

Maintenant, nous allons essayer un moyen simple de créer un pointeur unique en utilisant la fonction de membre Make_Unique. Ensuite, nous imprimerons la valeur en utilisant le pointeur que nous créerons. Incluons d'abord les fichiers d'en-tête, puis dirigez-vous vers notre fonction principale dans laquelle nous avons déclaré un pointeur unique nommé «p» de type entier. Cela signifie qu'il tiendra la valeur de type entier. À ce pointeur, nous avons attribué un pointeur Make_Unique de type entier auquel nous avons passé la valeur «123» comme argument qui sera stocké dans le tas de mémoire. En fin de compte, nous avons affiché la valeur stockée dans la mémoire en utilisant «* p», ce qui signifie qu'il affichera la valeur du pointeur unique «P», l'astérisque «*» est utilisé pour accéder au pointeur.

#inclure
#inclure

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

Comme indiqué dans la figure ci-dessous, la sortie du code effectuée ci-dessus s'affiche. Nous avons affiché la valeur du pointeur unique «P» qui était «123» sans avoir d'erreur.

Conclusion

Dans ce guide, nous avons expliqué les méthodes de la façon dont la fonction de membre Make_Unique est utilisée pour créer un_pointer unique. Make_Unique est le moyen le plus efficace de déclarer un pointeur d'un type unique, ces pointeurs sont détruits chaque fois qu'il sorte de la portée. Make_unique est le moyen le plus sûr de créer un emplacement de mémoire temporaire dans le tas de mémoire.