logo

Conjunto de memes en C++

Memset() es una función de C++. Copia un solo carácter un número específico de veces en un objeto. Es útil para llenar una cantidad de bytes con un valor determinado a partir de una ubicación de memoria específica. Se define en archivo de cabecera.

Sintaxis:



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

conjunto de memorias() convierte el valor ch a char sin firmar y lo copia en cada uno de los primeros n caracteres del objeto señalado por str[]. Si el objeto no se puede copiar de manera trivial (por ejemplo, escalar, matriz o una estructura compatible con C), el comportamiento no está definido. Si n es mayor que el tamaño del objeto señalado por str, el comportamiento no está definido.

Parámetros:

  • cadena []: Puntero al objeto para copiar el carácter.
  • cap: El personaje a copiar. Puede ser un carácter, un valor normal o un valor booleano.
  • norte: Número de bytes a copiar.

Valor de retorno: La función memset() devuelve str, el puntero a la cadena de destino.



Complejidad del tiempo: O(N) [Para atravesar desde el principio hasta el final del objeto]
Complejidad del espacio auxiliar: O(1)

Ejemplo:

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;> }>

>

>

Producción

tttttttttttttt>

Nota: También podemos usar memset() para establecer todos los valores como 0 o -1 para tipos de datos integrales. No funcionará si lo usamos para establecer otros valores. La razón es simple: Memset funciona byte a byte.

matriz de retorno de 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] <<>' '>;> }>

>

>

Producción

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

Ejemplo booleano:

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>

>

>

Producción

1 1 1 1 1 true true true true true>

NOTA: Para booleano, el objeto debe ser de tipo booleano para C++. P.ej. bool arreglo[n];

Ventajas de la función memset()

1. Aumentar la legibilidad

El objetivo principal de conjunto de memorias() La función es transformar cada carácter de la cadena completa en un carácter específico. En t valor antes de pasarlo como entrada. Es un código de una sola línea, lo que lo hace muy compacto y mejora la legibilidad en general.

2. Reducir las líneas de código

La misma tarea se ha logrado más rápidamente que la laboriosa técnica utilizando este conjunto de memorias() función, que simplemente acepta entradas, en lugar del uso innecesario de bucles para asignar y convertir el valor de cada carácter en la cadena a un En t valor.

3. Es más rápido

La misma tarea se ha logrado rápidamente en lugar de la forma que requiere mucho tiempo mediante el uso de este conjunto de memorias() entrada de la función sola, lo que elimina la necesidad de bucles innecesarios para asignar y convertir el valor de cada carácter en el cadena a una En t valor.

4. Útil para deshacerse del problema de desalineación

El C++ conjunto de memorias() La función ayuda al programador a resolver el problema de desalineación. Hay casos en los que descubre que el procesador tiene problemas con la alineación de los datos, lo que resulta en un error de programación. El memcpy() y memcmp() Los métodos en C++ son las mejores opciones en esta situación.

Nota: memset es una función antigua heredada de C. No es muy flexible a la hora de llenar la memoria con diferentes tipos de datos y valores. El std::rellenar La función es una mejor alternativa disponible en la biblioteca de algoritmos STL.