Crea un conjunto de ETS en C ++

Crea un conjunto de ETS en C ++
Un conjunto en C ++ es muy similar a un conjunto en matemáticas. El siguiente es un conjunto de enteros:
-5, 6, 9, 8, -2

El siguiente es un conjunto de caracteres:

'B', 'm', 'a', 'c', 't', 'o', 'q'

El siguiente es un conjunto de cadenas (elementos en una tabla de lectura):

"Lámpara de lectura", "computadora", "bolígrafo", "lápiz", "libros de ejercicios", "libros de texto"

En C ++, cada valor en cada uno de los conjuntos anteriores, se llama clave.

En C ++, un conjunto no permite valores duplicados. Sin embargo, todavía en C ++, un Multiset permite valores duplicados. Este artículo aborda el conjunto y no aborda multiset.

ETS significa estándar. Este artículo se basa en cómo crear un conjunto estándar en C++. Agregar elementos (valores) al conjunto también se menciona.

Biblioteca

C ++ tiene una biblioteca principal, llamada biblioteca estándar C ++. Esta biblioteca tiene subcon bibliotecas que también se dividen en más bibliotecas que se dividen en más subcon bibliotecas. Los sub-bibliotecarios inferiores pueden verse como módulos. El sub-bibliotecario de interés de primer nivel aquí se llama la biblioteca de contenedores. La biblioteca de contenedores tiene un sub-biblioteca, llamada biblioteca de contenedores asociativos. La biblioteca de contenedores asociativos tiene un sub-bibliotecario llamado biblioteca de set. Esta biblioteca de conjuntos puede considerarse como un módulo. Para conjuntos de código, debe incluirse al comienzo del programa de la siguiente manera:

#incluir
#incluir
usando el espacio de nombres STD;

siempre se debe incluir iOStream si el terminal (consola) se va a usar para la salida (e entrada). La segunda línea en este segmento de código incluye el módulo establecido. La tercera línea es una declaración que termina con un punto y coma, insiste en el uso del espacio de nombres estándar.

Para compilar el programa, con el compilador G ++ 20 para C ++ 20, use el siguiente comando:

G ++ -STD = C ++ 2A Nombre de archivo.nombre de archivo cpp -o

Ejecute el programa con:

./Nombre del archivo

Suponiendo que el archivo compilado esté en el directorio del usuario (inicio).

Construyendo un conjunto

Construir o crear un conjunto es el problema principal de este artículo. Hay muchos constructores para el set. Solo los más utilizados se explicarán aquí.

Construyendo un conjunto vacío

La siguiente declaración construirá un conjunto vacío:

colocar calle;

Comienza con el tipo de clase. Esto es seguido por los soportes de ángulo, que tiene el tipo de elementos (valores). Hay un espacio y luego el nombre del set (st).

Inserción de valores

Los elementos se pueden insertar con el método Insert () de la clase SET, de la siguiente manera:

colocar calle;
calle.insertar (-5); calle.insertar (6); calle.insertar (9);
calle.insertar (8); calle.insertar (-2);

Se ha insertado el conjunto -5, 6, 9, 8, -2.

Devolviendo un iterador

La clase establecida no tiene el operador de soportes cuadrados, como la matriz. Entonces, para escanear los elementos del conjunto, se necesita un iterador. Si el nombre del conjunto es ST, la siguiente declaración devolverá un iterador que apunta al primer elemento del conjunto:

colocar:: iterator iter = st.comenzar();

Aprecia la sintaxis de esta declaración.

Tamaño del set

La siguiente declaración devuelve el tamaño de un conjunto:

int sz = st.tamaño();

La variable, SZ, contiene el tamaño del conjunto.

Valores de lectura del conjunto

El siguiente programa utiliza el iterador para leer todos los valores en el conjunto:

colocar calle;
calle.insertar (-5); calle.insertar (6); calle.insertar (9);
calle.insertar (8); calle.insertar (-2);
para (establecer:: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

-5, -2, 6, 8, 9,

Tenga en cuenta cómo se usaron el bucle y el iterador. "calle.end () ”Devuelve el iterador final que apunta justo después del último elemento.

Con cadenas como elementos, el módulo de cadena debe incluirse con;

#incluir

Considere el siguiente código con elementos de cadena:

colocar calle;
calle.insertar ("Lámpara de lectura"); calle.insertar ("computadora"); calle.insertar ("pluma");
calle.insertar ("lápiz"); calle.insertar ("libros de ejercicios"); calle.insertar ("libros de texto");
para (establecer:: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

computadora, libros de ejercicios, bolígrafo, lápiz, lámpara de lectura, libros de texto,

Tenga en cuenta que cuando se agregan valores con el comando insert (), el conjunto se ordene internamente.

Tenga en cuenta también que, para usar cadenas, la clase de cadena debe incluirse; De lo contrario, son los consejos de las cuerdas los que se clasificarán y no los literales alfabéticos de cuerda mismos.

set (const set & x)
Este es un constructor establecido, que tomaría el identificador de otro conjunto como argumento, para construir un nuevo conjunto. El siguiente código ilustra esto:

establecer st;
calle.insertar (-5); calle.insertar (6); calle.insertar (9); calle.insertar (8); calle.insertar (-2);
colocar st2 (st);
para (establecer:: iterator iter = st2.comenzar(); iter != ST2.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

-5, -2, 6, 8, 9,

set (Initializer_list, const compare & = compare (), const allocator & = allocator ()))

Este es un constructor, donde el segundo y el tercer argumentos son opcionales. Cuando no se da, los valores predeterminados son elegidos por C++. El primer argumento es un inicializador_list (matriz literal). El siguiente código ilustra el uso del constructor:

colocar st ('b', 'm', 'a', 'c', 't', 'o', 'q');
para (establecer:: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

A, B, C, M, O, Q, T,

Observe que la salida está ordenada a pesar del hecho de que la entrada es un inicializador_list sin clasificar.

Nota: Con el inicializador_list, las paréntesis de la llamada del constructor pueden omitirse, como en el siguiente código:

colocar st 'b', 'm', 'a', 'c', 't', 'o', 'q';
para (establecer:: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida sigue siendo:

A, B, C, M, O, Q, T,

Constructores de copias

Se puede crear un conjunto asignando el identificador de otro conjunto al identificador del nuevo conjunto, o asignando el conjunto literal (literal de matriz) al identificador del nuevo conjunto.

set & operator = (const set & x)
Esto asigna el identificador de otro conjunto al identificador de un nuevo conjunto como se muestra, por lo tanto:

colocar calle;
calle.insertar ('b'); calle.insertar ('m'); calle.insertar ('a'); calle.insertar ('c');
calle.insertar ('t'); calle.insertar ('o'); calle.insertar ('Q');
colocar st2 = st;
para (establecer:: iterator iter = st2.comenzar(); iter != ST2.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

A, B, C, M, O, Q, T,

set & operator = (inicializer_list)
Esto asigna el conjunto literal (literal de matriz) al identificador de un nuevo conjunto como se muestra, por lo tanto:

colocar st = 'b', 'm', 'a', 'c', 't', 'o', 'q';
para (establecer:: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout << *iter << ", ";
cout << endl;

La salida es:

A, B, C, M, O, Q, T,

Conclusión

El conjunto literal en C ++ es similar al de las matemáticas. Un conjunto, que no se clasifica, se clasifica, ascendiendo, después de la construcción (creación) con la configuración predeterminada. ETS significa estándar. Las formas comunes de crear un conjunto se han ilustrado arriba.