La función de miembro de Borrase en el conjunto de STD C ++

La función de miembro de Borrase en el conjunto de STD C ++
Después de que los valores se han insertado en un conjunto en C ++, los valores se clasifican internamente en orden ascendente cuando la configuración es predeterminada. La clase establecida en C ++ tiene la función miembro ERASE (). Tiene cuatro variantes sobrecargadas que se exploran en este artículo. La función borra uno o más elementos del objeto establecido.

Un ejemplo de un conjunto es:

"Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava"

Es un conjunto de nombres de frutas. Cada valor aquí se llama clave. Este es también el set literal en c++. Es el literal de la matriz también. Y también es el inicializador_list.

Un programa C ++ que crea conjuntos y cadenas debe comenzar de la siguiente manera:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;

La inclusión de la biblioteca iOStream es para salida (e entrada) al terminal (consola). La inclusión de la biblioteca de conjuntos es para conjuntos. La inclusión de la biblioteca de cadenas es para cuerdas. Si se usan punteros para char* en lugar de la clase de cadena, entonces son los punteros de los literales de char y no los literales alfabéticos de cadena mismos. Estas son todos los sub-bibliotecarios de la biblioteca estándar principal en C++. ETS en el título de este artículo significa estándar. La cuarta línea no es una directiva. Es una declaración que termina en un punto y coma. Esto insiste en que cualquier nombre que no esté precedido por el nombre estándar del espacio de nombres es del espacio de nombres estándar.

Nota: Cuando se han insertado valores en el objeto establecido, se clasifican ascendiendo internamente para la configuración predeterminada.

size_type Erase (const key_type & x)

Esto borra la clave, cuyo nombre es el argumento de la función miembro ERASE () del conjunto. El programador debe saber de antemano que esta clave existe en el conjunto. La función devuelve el número de elementos borrados del conjunto. El siguiente programa muestra cómo usar esta función miembro:

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

setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
int sz = st.borrar ("papaya");
cout<para (set :: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout<< *iter<< ", ";
cout<regresar 0;

La salida es:

1
Apricot, Blackberry, Guava, Peach, Plum, Strawberry,

Borrar iterador (posición del iterador)

Esta función miembro borra la clave que el iterador apunta. El siguiente código ilustra esto:

setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
para (set :: iterator iter = st.comenzar(); iter != ST.fin(); iter ++)
cout<< *iter<< ", ";
if ("papaya" == *iter)
calle.borrar (iter);

cout<para (set :: iterator ite = st.comenzar(); ite != ST.fin(); ite ++)
cout<< *ite<< ", ";

cout<La salida es:

Apricot, Blackberry, Guava, Papaya, Guava, Peach, Plum, Strawberry,
Apricot, Blackberry, Guava, Peach, Plum, Strawberry,

"Papaya" fue eliminada. Como fue eliminado, Guava tomó su lugar por la clasificación interna. Es por eso que la guayaba ha aparecido dos veces en la primera línea de salida.

Borras de iterador (posición const_iterator)

Esta función de miembro sobrecargado es la misma que la anterior, excepto que el argumento es un iterador constante. Todavía devuelve el iterador normal. El iterador devuelto apunta al siguiente elemento después de que se borra en función de la clasificación interna. El siguiente programa ilustra todo eso:

setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
set :: iterator ite;
para (set :: const_iteratoriter = st.comenzar(); iter != ST.fin(); iter ++)
cout<< *iter<< ", ";
if ("papaya" == *iter)
ite = st.borrar (iter);

cout<para (set :: iterator it = st.comenzar(); él != ST.fin(); it ++)
cout<< *it << ", ";

cout<La salida es:

Apricot, Blackberry, Guava, Papaya, Guava, Peach, Plum, Strawberry,
durazno
Apricot, Blackberry, Guava, Peach, Plum, Strawberry,

ERASE ITERATOR (const_iterator primero, const_iterator Último)

"Primero" es un iterador que apunta a un elemento en el conjunto ordenado. "Last" es un iterador que apunta a un elemento en el conjunto ordenado después de primero. El argumento iteradores son iteradores constantes. Esta función miembro borra un rango que incluye el elemento para "primero", y que excluye el elemento para el último. El siguiente código ilustra esto:

setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
para (set :: iterator it = st.comenzar(); él != ST.fin(); it ++)
cout<< *it << ", ";
cout<set :: const_iteratoritb = st.comenzar(); set :: const_iteratorite = st.fin();
itb ++; itb ++; ite--; ite--; ite--;
set :: iterator ite = st.borrar (itb, ite);
para (set :: iterator it = st.comenzar(); él != ST.fin(); it ++)
cout<< *it << ", ";

cout<La salida es:

Apricot, Blackberry, Guava, papaya, durazno, ciruela, fresa,
albaricoque, mora, durazno, ciruela, fresa,

Se ha eliminado la gama de "Guava, Papaya, Peach", excluyendo "Peach".

Reemplazar un valor

El conjunto en C ++ no tiene ninguna función miembro para reemplazar un valor; y no debería tener. Esto se debe a que cada vez que se inserta un valor, hay una reorección completa del conjunto (lista). Por lo tanto, no tiene sentido reemplazar un valor cuya posición cambiará después de volver a clasificar. No obstante, si se borra un valor, se puede insertar un nuevo valor que se someterá a ajuste de posición. En el siguiente programa, se borra "Blackberry" y se inserta "sandía". El tamaño total sigue siendo el mismo a las 7.

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

setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
calle.borrar ("Blackberry"); calle.insertar ("sandía");
para (set :: iterator it = st.comenzar(); él != ST.fin(); it ++)
cout<< *it << ", ";
cout<int sz = st.tamaño();
cout<regresar 0;

La salida es:

albaricoque, guayaba, papaya, durazno, ciruela, fresa, sandía,
7

Conclusión

En C ++, la clase establecida se encuentra en la biblioteca establecida de la biblioteca estándar principal de C ++. La clase establecida tiene cuatro funciones de miembro Eraase () sobrecargadas. Se puede borrar un solo elemento. Una variedad de elementos que excluyen el último elemento también se puede borrar. Después de cada acción de borrado, el conjunto se reorta internamente.

El conjunto en C ++ no tiene ninguna función miembro para reemplazar un valor; y no debería tener. Esto se debe a que cada vez que se inserta un valor, hay una reorección completa del conjunto (lista). Por lo tanto, no tiene sentido reemplazar un valor cuya posición cambiará después de volver a clasificar.