La fonction de membre Effacement dans l'ensemble C ++ STD

La fonction de membre Effacement dans l'ensemble C ++ STD
Une fois les valeurs insérées dans un ensemble en C ++, les valeurs sont triées en interne par ordre croissant lorsque les paramètres sont par défaut. La classe définie en C ++ a la fonction de membre effacer (). Il a quatre variantes surchargées qui sont explorées dans cet article. La fonction efface un ou plusieurs éléments de l'objet SET.

Un exemple d'un ensemble est:

"Plum", "BlackBerry", "Abricot", "Strawberry", "Peach", "Papaya", "Guava"

C'est un ensemble de noms de fruits. Chaque valeur ici est appelée une clé. C'est aussi l'ensemble littéral en C++. C'est aussi le tableau de gamme littéral. Et c'est aussi l'initialiseur_list.

Un programme C ++ qui crée des ensembles et des chaînes doit démarrer comme suit:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;

L'inclusion de la bibliothèque iOStream est destinée à la sortie (et à l'entrée) du terminal (console). L'inclusion de la bibliothèque SET est destinées aux ensembles. L'inclusion de la bibliothèque de chaînes est pour les chaînes. Si les pointeurs vers char * sont utilisés à la place de la classe de chaînes, alors ce sont les pointeurs des littéraux chargés qui seront triés et non les littéraux alphabétiques de cordes eux-mêmes. Ce sont tous des sous-bibliothèques de la bibliothèque standard principale en C++. STD dans le titre de cet article signifie standard. La quatrième ligne n'est pas une directive. C'est une déclaration qui se termine par un point-virgule. Cela insiste sur le fait que tout nom qui n'est pas précédé par le nom de l'espace de noms standard provient de l'espace de noms standard.

Remarque: Lorsque des valeurs ont été insérées dans l'objet SET, elles sont triées en interne, pour les paramètres par défaut.

size_type efface (const key_type & x)

Cela efface la clé, dont le nom est l'argument de la fonction de membre effacer () de l'ensemble. Le programmeur doit savoir à l'avance que cette clé existe dans l'ensemble. La fonction renvoie le nombre d'éléments effacés de l'ensemble. Le programme suivant montre comment utiliser cette fonction membre:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()

Setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
int sz = st.Effacer ("papaye");
couter<pour (set :: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter<< *iter<< ", ";
couter<retour 0;

La sortie est:

1
abricot, mûre, goyave, pêche, prune, fraise,

Iterator efface (position itérateur)

Cette fonction membre efface la clé que l'itérateur pointe vers. Le code suivant illustre ceci:

Setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
pour (set :: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter<< *iter<< ", ";
if ("papaya" == * iter)
St.effacer (iter);

couter<pour (set :: iterator ite = st.commencer(); ite != st.fin(); ite ++)
couter<< *ite<< ", ";

couter<La sortie est:

abricot, mûre, goyave, papaye, goyave, pêche, prune, fraise,
abricot, mûre, goyave, pêche, prune, fraise,

"Papaya" a été supprimé. Comme il a été supprimé, la goyave a pris sa place par le tri interne. C'est pourquoi la goyave est apparue deux fois dans la première ligne de sortie.

Iterator Erase (const_iterator position)

Cette fonction de membre surchargé est la même que celle ci-dessus, sauf que l'argument est un itérateur constant. Il renvoie toujours l'itérateur normal. L'itérateur retourné pointe vers l'élément suivant après celui effacé en fonction du tri interne. Le programme suivant illustre tout cela:

Setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
set :: iterator ite;
pour (set :: const_iteratoriter = st.commencer(); iter != st.fin(); iter ++)
couter<< *iter<< ", ";
if ("papaya" == * iter)
ite = st.effacer (iter);

couter<pour (set :: iterator it = st.commencer(); il != st.fin(); it ++)
couter<< *it << ", ";

couter<La sortie est:

abricot, mûre, goyave, papaye, goyave, pêche, prune, fraise,
pêche
abricot, mûre, goyave, pêche, prune, fraise,

Iterator effacer (const_iterator d'abord, const_iterator dernier)

«First» est un itérateur pointant vers un élément de l'ensemble trié. «Last» est un itérateur pointant vers un élément de l'ensemble trié après le premier. Les itérateurs d'arguments sont des itérateurs constants. Cette fonction membre efface une gamme qui inclut l'élément pour «premier», et qui exclut l'élément pour la fin. Le code suivant illustre ceci:

Setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
pour (set :: iterator it = st.commencer(); il != st.fin(); it ++)
couter<< *it << ", ";
cout<set :: const_iteratoritb = st.commencer(); set :: const_iteratorite = st.fin();
itb ++; itb ++; ite--; ite--; ite--;
set :: iterator ite = st.effacer (itb, ite);
pour (set :: iterator it = st.commencer(); il != st.fin(); it ++)
couter<< *it << ", ";

couter<La sortie est:

abricot, mûre, goyave, papaye, pêche, prune, fraise,
abricot, mûre, pêche, prune, fraise,

La gamme de «goyave, papaye, pêche», à l'exclusion de «pêche», a été supprimée.

Remplacement d'une valeur

L'ensemble en C ++ n'a aucune fonction membre pour remplacer une valeur; Et il ne devrait pas avoir. En effet, chaque fois qu'une valeur est insérée, il y a une réédition complète de l'ensemble (liste). Ainsi, il n'a pas de sens de remplacer une valeur dont la position changera après la ré-vert. Néanmoins, si une valeur est effacée, une nouvelle valeur peut être insérée qui subira un ajustement de position. Dans le programme suivant, «BlackBerry» est effacé et «pastèque» est insérée. La taille totale reste la même à 7.

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()

Setst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
St.Effacer ("BlackBerry"); St.insérer ("pastèque");
pour (set :: iterator it = st.commencer(); il != st.fin(); it ++)
couter<< *it << ", ";
cout<int sz = st.taille();
couter<retour 0;

La sortie est:

abricot, goyave, papaye, pêche, prune, fraise, pastèque,
7

Conclusion

En C ++, la classe SET se trouve dans la bibliothèque définie de la bibliothèque standard principale C ++. La classe définie a quatre fonctions de membre Erase () surchargées. Un seul élément peut être effacé. Une gamme d'éléments excluant le dernier élément peut également être effacé. Après chaque action d'effacement, l'ensemble est re-sortant en interne.

L'ensemble en C ++ n'a aucune fonction membre pour remplacer une valeur; Et il ne devrait pas avoir. En effet. Ainsi, il n'a pas de sens de remplacer une valeur dont la position changera après la ré-vert.