logo

Ensemble de mémoires en C++

Memset() est une fonction C++. Il copie un seul caractère un nombre de fois spécifié dans un objet. Il est utile pour remplir un certain nombre d'octets avec une valeur donnée à partir d'un emplacement mémoire spécifique. Il est défini dans En tête de fichier.

Syntaxe:



void* memset( void* str, int ch, size_t n);>

Ensemble de mémoires() convertit la valeur ch en caractère non signé et la copie dans chacun des n premiers caractères de l'objet pointé par str[]. Si l'objet n'est pas trivialement copiable (par exemple, scalaire, tableau ou structure compatible C), le comportement n'est pas défini. Si n est supérieur à la taille de l'objet pointé par str, le comportement n'est pas défini.

Paramètres:

  • chaîne[] : Pointeur vers l'objet pour copier le caractère.
  • ch : Le caractère à copier. Il peut s'agir d'un caractère, d'une valeur normale ou d'une valeur booléenne.
  • n: Nombre d'octets à copier.

Valeur de retour : La fonction memset() renvoie str, le pointeur vers la chaîne de destination.



Complexité temporelle : O(N) [Pour le parcours du début à la fin de l'objet]
Complexité de l'espace auxiliaire : O(1)

Exemple:

C++






// C++ program to demonstrate memset> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >char> str[] =>'geeksforgeeks'>;> >memset>(str,>'t'>,>sizeof>(str));> >cout << str;> >return> 0;> }>

>

>

Sortir

tttttttttttttt>

Note: Nous pouvons également utiliser memset() pour définir toutes les valeurs sur 0 ou -1 pour les types de données intégraux. Cela ne fonctionnera pas si nous l'utilisons pour définir d'autres valeurs. La raison est simple, memset fonctionne octet par octet.

si-sinon java

C++




// C++ Program to demonstrate that we can use memset() to> // set all values as 0 or -1 for integral data types also> #include> using> namespace> std;> // Driver Code> int> main()> {> >int> a[5];> >// all elements of A are zero> >memset>(a, 0,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// all elements of A are -1> >memset>(a, -1,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// Would not work> >memset>(a, 5,>sizeof>(a));>// WRONG> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> }>

>

>

Sortir

0 0 0 0 0 -1 -1 -1 -1 -1 84215045 84215045 84215045 84215045 84215045>

Exemple booléen :

C++




// C++ Program to demonstrate that we can use memset() to> // set all values as boolean data types also> #include> using> namespace> std;> int> main()> {> >bool> prime[5];> >memset>(prime,>true>,>sizeof>(prime));> >// If you print without using boolalpha it will print> >// like this> >for> (>int> i = 0; i <5; i++)> >cout << prime[i] <<>' '>;> >cout <<>' '>;> >// If you use boolalpha it will print like this> >for> (>int> i = 0; i <5; i++)> >cout << boolalpha << prime[i] <<>' '>;> >return> 0;> }> // This code is contributed by Susobhan Akhuli>

>

>

Sortir

1 1 1 1 1 true true true true true>

NOTE: Pour booléen, l'objet doit être de type booléen pour C++. Par exemple. booléen arr[n];

Avantages de la fonction memset( )

1. Augmenter la lisibilité

Le but principal de jeu de mémoires() La fonction est de transformer chaque caractère de la chaîne entière en un caractère spécifique int valeur avant de la transmettre en entrée. Il s’agit d’un morceau de code d’une seule ligne, ce qui le rend très compact et améliore globalement la lisibilité.

2. Réduisez les lignes de code

La même tâche a été accomplie plus rapidement que la technique laborieuse en utilisant ce jeu de mémoires() fonction, qui accepte simplement les entrées, plutôt que l'utilisation inutile de boucles pour attribuer et convertir la valeur de chaque caractère de la chaîne en un int valeur.

3. C'est plus rapide

La même tâche a été accomplie rapidement plutôt que de manière fastidieuse en utilisant ce jeu de mémoires() l'entrée de la fonction seule, ce qui élimine le besoin de boucles inutiles pour attribuer et convertir la valeur de chaque caractère dans le chaîne à un int valeur.

4. Utile pour se débarrasser du problème de désalignement

Le C++ jeu de mémoires() La fonction aide le programmeur à résoudre le problème de désalignement. Il arrive parfois que vous découvriez que le processeur rencontre des problèmes d'alignement des données, ce qui entraîne une erreur de programmation. Le memcpy() et memcmp() les méthodes en C++ sont les meilleures options dans cette situation.

Note: memset est une ancienne fonction héritée de C. Elle n'est pas très flexible pour remplir la mémoire avec différents types de données et valeurs. Le std :: remplir la fonction est la meilleure alternative disponible dans la bibliothèque d'algorithmes STL.