Funciones de conjunto de C ++

Funciones de conjunto de C ++
“Podemos emplear las numerosas características y herramientas beneficiosas de C ++ para ayudar en la programación dinámica. Una de estas piezas es un conjunto que se encuentra en la biblioteca de plantillas estándar, que ofrece un mecanismo para almacenar datos de manera organizada de manera organizada. En este tutorial de set de C ++, hablaremos sobre todos los conceptos básicos de las funciones de set de C ++.

Las estructuras de los C ++ STL para mantener elementos en un orden específico se denominan conjuntos. Un conjunto debe tener componentes únicos. Cada elemento en un conjunto puede ser identificado por su valor individualmente, por lo que sirven como claves. En C ++, podemos agregar y eliminar elementos de un conjunto; Sin embargo, no podemos cambiar los valores de los componentes porque son estáticos después de ser colocados en el conjunto."

Definición de set en c++

Como ya se dice, los conjuntos son solo el tipo de contenedores de biblioteca de plantilla estándar utilizados en C ++ para almacenar artículos con precisión. Los conjuntos solo pueden someterse a los métodos de inserción y eliminación. En un objeto de tipo establecido, los elementos se organizan automáticamente en un orden especificado. No podemos cambiar o actualizar los valores de los componentes ya existentes en un conjunto porque los elementos en contenedores son inmutables. Al definirlo con precisión, un elemento en un conjunto sirve como clave para sí mismo. Los conjuntos solo están habilitados para contener un valor específico.

Cuándo utilizar conjuntos?

En la programación competitiva, los conjuntos se emplean ampliamente como contenedores. Cuando es necesario almacenar elementos de manera categorizada, podemos considerar utilizar conjuntos, pero tenga en cuenta que los conjuntos no permiten el almacenamiento de valores repetidos. Una vez que se ha ingresado, el valor no se puede cambiar.

Implementación de los conjuntos

Para interactuar con conjuntos, los 2 archivos de encabezado principales deben integrarse. Se accede a los conjuntos utilizando iteradores. Integre #include y #include en su código. Tenemos la opción de usar solo este archivo de encabezado en lugar de estos dos. La biblioteca sirve como sustituto de los archivos de encabezado mencionados anteriormente. Solo podemos emplear este archivo de encabezado porque incorpora todos los archivos de encabezado. Se están utilizando árboles de búsqueda binarios para definir conjuntos en un nivel interno.

Establecer características en C++

Los siguientes son algunos de los atributos de conjunto comunes en C ++:

  • La característica de la singularidad: en C ++, cada miembro de un conjunto debe ser distinto; Los artículos repetidos no son aceptados. Como resultado, los conjuntos en C ++ no admiten la repetición.
  • La característica de ser organizado: los componentes de un contenedor establecido generalmente se guardan de manera organizada.
  • La capacidad de ser inmutable: una vez que los elementos se guardan en un conjunto, no se pueden modificar. Como resultado, si bien se permiten la suma y la eliminación, no se requiere actualizar o modificar los componentes existentes del conjunto.
  • El atributo de la ejecución interna: se está utilizando un BST para crear lógicamente un conjunto en C++.
  • La característica de la indexación: como la biblioteca de plantilla estándar de C ++ no proporcionará indexación, los conjuntos en C ++ también tienen la característica de no ser indicado.

Sintaxis del set

La siguiente es la declaración std :: set de la biblioteca "set":

Parámetros

  • Clave: Tipo del componente representado en la tecla. Cualquier otra estructura de datos, como un tipo definido por el usuario, podría utilizarse en lugar de clave.
  • Asignadores: estos serán los objetos a cargo de incorporar la administración de almacenamiento. Siempre que queramos segregar la asignación y realizar la creación en 2 fases, tenemos que utilizar el std :: asignator. Cuando la eliminación secuencial y la memoria dinámica se llevan a cabo en 2 fases, también se emplea. El valor de retorno para el tipo de argumento de argumentos en todos los contenedores es std :: asignator. Los operadores nuevos y borrados son todo lo que el asignador básico emplea para adquirir y aliviar el almacenamiento.
  • Comparar: Un atributo binario con dos parámetros que tienen un tipo similar a los componentes y un valor de retorno de bool. Si se considera que un elemento viene antes de la clave en la secuenciación de la función define, la declaración Comp (x, y), donde compil. El objeto establecido utiliza esta declaración para evaluar la disposición de los componentes dentro del contenedor, así como si dos claves de elementos son iguales (al compararlas instintivamente: son iguales si! comp (x, y) &&!comp (y, x)).

Un contenedor establecido puede contener componentes únicos. Esto podría ser un objeto de función o un puntero de función. Menos es el valor predeterminado, y proporciona los mismos resultados que usar la expresión menos que la expresión (x

Funciones en conjuntos

En C ++, los conjuntos podrían someterse a una amplia variedad de operaciones. Evaluemos algunas de las técnicas de conjunto principal.

  • Función Begin (): un iterador que apunta al primer elemento del conjunto se devuelve por esta función.
  • Función end (): este método proporciona un iterador que apunta al punto adyacente al último elemento del conjunto en el enfoque teórico.
  • Función vacía (): se utiliza para determinar si el conjunto está en blanco o no.
  • Método size (): proporciona el número total de elementos en un conjunto.
  • MAX_SIZE () Función: recupera el límite superior de los elementos de un conjunto o el valor más alto que puede acomodar un conjunto.
  • Rbegin (): Esta función, en contraste con Begin (), proporciona un iterador invertido que apunta al valor final de un conjunto.
  • Rend (): a diferencia de la función end (), proporciona un iterador invertido que apunta al lugar lógicamente antes del último valor de un conjunto.
  • Función ERASE (): cuando se usa en un conjunto, elimina el elemento en la ubicación indicado por el puntero especificado en el parámetro.
  • Erase (const_n): este método elimina inmediatamente el valor "n" de un conjunto cuando se suministra como argumento.
  • Insertar (const n): este método agrega un nuevo miembro, "n", al conjunto.
  • Encontrar (n): encuentra el conjunto para el elemento definido y proporciona un iterador que se refiere a la ubicación del componente identificado. Produce un iterador que apunta al final del artículo que no se puede recuperar.
  • Recuento (const n): esta función cuenta el número de veces que aparece el valor suministrado "n" y proporciona 0 o 1 dependiendo de si el artículo fue recuperado o no.
  • Función Clear (): elimina cada elemento de un conjunto.

Ejemplo no 1

En este caso, se inicializará un conjunto. En C ++, especificamos los diferentes tipos de elementos que se colocarán en un conjunto cuando se cree. Los puntos de datos de un conjunto generalmente se almacenan en orden ascendente. La función mayor podría usarse para mantener los datos en orden descendente. Conjunto en blanco

  • Usando valores
  • Usando una matriz.
  • Usando otro conjunto.

Estas son numerosas técnicas para declarar un conjunto.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

sets1;
colocarS2;
colocar s3 = 62, 17, 25, 81;
colocar S4 (S3);
int ar [] = 15, 24, 75, 51;
establecer S5 (AR, AR+4);
set :: iterator i;
para (auto i = s5.comenzar(); i!= S5.end (); i ++)

cout<
regresar 1;

Los archivos de encabezado y estarían integrados primero. Después de esto, se utilizará el espacio de nombres estándar. La función principal () se llamará. El primer conjunto se inicializará y será un conjunto vacío ya que no contiene ningún elemento. El segundo set será declarado como un conjunto vacío en orden descendente. El nuevo conjunto se inicializará agregando diferentes enteros. Este conjunto contiene cuatro elementos.

Además, inicializaremos un nuevo conjunto llamado "S4" mediante el uso de otro conjunto, "S3". Proporcionamos los valores del S3 como los parámetros del S4. Ahora el conjunto será declarado a partir de una matriz. Especificamos los valores en la matriz y luego guardamos esos valores en una variable "A". El quinto conjunto contiene los 4 valores de la matriz. A continuación, definiremos el iterador de estos conjuntos requeridos. Adquiriríamos los valores de todos los conjuntos mediante el uso del bucle "para".

Ejemplo no 2

Esta ilustración demuestra cómo funcionan los métodos de inserción y eliminación del conjunto.

#incluir
usando el espacio de nombres STD;
int main ()

establecer S1;
S1.insertar (22);
S1.insertar (33);
S1.insertar (56);
S1.insertar (9);
S1.insertar (67);
S1.insertar (47);
S1.insertar (88);
set :: iterator p_1, p_2, p_3;
cout<< " The values of the set are: \n" ;
para (p_1 = s1.comenzar() ; P_1 != S1.fin() ; P_1 ++)

cout<< *p_1 << " " ;

cout<colocar S2 (S1.begin (), s1.fin() );
colocar :: iterador i;
P_2 = S1.encontrar (22);
P_3 = S1.encontrar (88);
S1.borrar (p_2, p_3);
cout<< " The values of the set after using erase() function: \n " ;
para (p_1 = s1.comenzar() ; P_1 != S1.fin() ; P_1 ++)

cout<< *p_1 << " ";

cout<cout<< " The values of second set are: \n" ;
para (i = s2.comenzar() ; i != S2.fin() ; i ++)

cout<< *i<< " ";

regresar 0;

Las bibliotecas requeridas se incluirán al comienzo del programa. El espacio de nombres estándar se agregará como "STD". Ahora se invocará el método principal (). Declaramos diferentes conjuntos. Llamaríamos al método insert () para agregar los valores al conjunto. Se crearán diferentes punteros y llamados "P_1", "P_2" y "P_3". El iterador será declarado como estos punteros. La declaración "cout" se utilizará para representar la línea "Los valores del conjunto son". Ahora se utilizará el bucle "para" para mostrar todos los valores insertados del conjunto.

El comienzo () se llamaría para iniciar los valores del conjunto que se imprimirán, y los métodos de end () se aplicarían para terminar los valores del conjunto. Estos métodos serán invocados dentro del bucle "para". El constructor del primer puntero se definirá dentro de la declaración "Cout". Ahora haremos otro conjunto organizando los valores en orden descendente. Los elementos del primer y segundo conjunto requeridos son los mismos.

La función find () se llamaría a los elementos del primer conjunto definido. Esta función obtiene los valores definidos del conjunto. Ahora aplicaríamos el método ERASE () para eliminar los valores del primer conjunto. Los valores que se eliminarán son de 22 a 88. La instrucción "Cout" se usará para mostrar el texto "Los valores del conjunto después de usar la función ERASE ()". Para mostrar los valores, se utilizará el bucle "para".

Entonces se declarará el constructor del primer puntero. Ahora utilizamos el bucle "para" para imprimir los elementos del segundo conjunto requerido. La instrucción "Cout" imprime la línea "Los valores del segundo conjunto son". Antes de agregar el comando "return 0", se creará el constructor de la variable iteradora.

Ejemplo no 3

En este ejemplo, se utilizarán dos funciones, find () y borrarán. Si se identifica el elemento, el método find () produce un iterador que se refiere a él; de lo contrario, proporciona un iterador que se refiere al final del conjunto. Los elementos en el conjunto eliminarán con la ayuda de la función ERASE ().

#incluir
usando el espacio de nombres STD;
int main ()

sets_1;
S_1.insertar (45);
S_1.insertar (12);
S_1.insertar (17);
S_1.insertar (89);
S_1.insertar (25);
S_1.insertar (14);
S_1.insertar (78);
S_1.insertar (34);
set :: iterator i;
cout<<"Values of required set: \n";
para (i = s_1.comenzar() ; i != S_1.fin() ; i ++)

cout<<*i<< " ";

cout<cout<< " Updated set \n " ;
S_1.borrar (S_1.begin (), s_1.encontrar (25));
para (i = s_1.comenzar() ; i!= S_1.fin() ; i ++)
cout<< *i<< " " ;
cout<cout<< " lower bound of 45 is: \n" ;
cout<< *s_1.lower_bound( 45 )<cout<< " lower bound of 17 is: \n" ;
cout<< *s_1.lower_bound( 17 ) <cout<< " upper bound of 45 is: \n" ;
cout<< *s_1.upper_bound( 45 ) <cout<< "upper bound of 17 is: \n" ;
cout<< *s_1.upper_bound( 17 ) <regresar 0;

El programa incluirá las bibliotecas relevantes al principio llamadas . Se introducirá el espacio de nombres estándar como "STD". Ahora se realizará una referencia a la función principal (). Especifique el conjunto primero. Para incluir los valores en el conjunto, usaríamos la función insert (). El iterador será identificado como "I"; Los valores del conjunto apropiado se mostrarán utilizando el comando "Cout". El bucle "para" ahora se usará para mostrar todos los valores insertados del conjunto.

La función begin () se usaría para comenzar a imprimir los valores del conjunto, y el método final () se usaría para terminar de imprimir los valores del conjunto. Estos métodos definidos se emplearían dentro del bucle "para". La declaración de "cout" declarará el constructor del iterador. El texto "Conjunto actualizado" se mostrará utilizando la instrucción CoUT. Los componentes del primer conjunto se determinarían utilizando la función find (). Los valores definidos se obtienen por esta función del conjunto.

Para eliminar los valores del primer conjunto, ahora utilizaremos el método ERASE (). Se eliminarán hasta 25 valores. Usando un bucle "para", se presentarán los enteros restantes. La declaración "cout" proporcionará una declaración del constructor del iterador. Se llevarán a cabo operaciones de límite inferior y superior en los valores del conjunto. Los valores 45 y 17 del conjunto se proporcionarían a la función inferior de límite (), que luego usaría el comando "cout" para imprimir el resultado. Estos valores similares en el conjunto se tratarán a un método superior () de límite superior (). El valor de resultado será imprimido por el comando "cout". El comando "return 0" se agregará al final.

Conclusión

Hemos discutido las funciones de C ++ Set en esta guía. Similar a otros paquetes de biblioteca estándar, el conjunto de C ++ es crucial. Hace que sea más fácil para los desarrolladores extraer y manipular valores. Hemos implementado tres programas. La inicialización de los conjuntos se maneja en el primer ejemplo. El segundo muestra las adiciones y eliminaciones de valores del conjunto. En la instancia final, elegimos algunos valores del conjunto y luego los eliminamos.