Créer un ensemble de MST en C ++

Créer un ensemble de MST en C ++
Un ensemble en C ++ est très similaire à un ensemble en mathématiques. Ce qui suit est un ensemble d'entiers:
-5, 6, 9, 8, -2

Ce qui suit est un ensemble de caractères:

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

Ce qui suit est un ensemble de chaînes (éléments sur une table de lecture):

"Reading Lamp", "Computer", "stylo", "crayon", "exercices", "manuels"

En C ++, chaque valeur dans chacun des ensembles ci-dessus est appelée clé.

En C ++, un ensemble ne permet pas de valeurs en double. Cependant, toujours en C ++, un multiset permet des valeurs en double. Cet article traite de l'ensemble et ne s'adresse pas à Multiset.

STD signifie la norme. Cet article est sur la façon de créer un ensemble standard en C++. L'ajout d'éléments (valeurs) dans l'ensemble est également mentionné.

Bibliothèque

C ++ a une bibliothèque principale, appelée bibliothèque standard C ++. Cette bibliothèque a des sous-bibliothèques qui sont également divisées en autres sous-bibliothèques qui sont divisées en plus de sous-bibliothèques. Les sous-bibliothèques inférieures peuvent être considérées comme des modules. La sous-bibliothèque de premier niveau d'intérêt ici est appelée la bibliothèque des conteneurs. La bibliothèque des conteneurs a une sous-bibliothèque, appelée la bibliothèque de conteneurs associatifs. La bibliothèque de conteneurs associatifs a une sous-bibliothèque appelée la bibliothèque SET. Cette bibliothèque définie peut être considérée comme un module. Pour des ensembles de codes, il doit être inclus au début du programme comme suit:

#inclure
#inclure
Utilisation de Namespace Std;

Iostream doit toujours être inclus si le terminal (console) doit être utilisé pour la sortie (et l'entrée). La deuxième ligne de ce segment de code comprend le module SET. La troisième ligne est une déclaration se terminant par un point-virgule, l'insiste sur l'utilisation de l'espace de noms standard.

Afin de compiler le programme, avec le compilateur G ++ 20 pour C ++ 20, utilisez la commande suivante:

g ++ -std = c ++ 2a nom de fichier.Nom de fichier CPP -O

Exécutez le programme avec:

./nom de fichier

en supposant que le fichier compilé se trouve dans le répertoire utilisateur (home).

Construire un ensemble

La construction ou la création d'un ensemble est le principal problème de cet article. Il existe de nombreux constructeurs pour l'ensemble. Seuls les plus couramment utilisés seront expliqués ici.

Construire un ensemble vide

L'instruction suivante construira un ensemble vide:

ensemble St;

Il commence par le type de classe. Ceci est suivi des supports d'angle, qui ont le type pour les éléments (valeurs). Il y a un espace puis le nom de l'ensemble (ST).

Insérer des valeurs

Les éléments peuvent être insérés avec la méthode insert () de la classe SET, comme suit:

ensemble St;
St.insérer (-5); St.insérer (6); St.insérer (9);
St.insérer (8); St.insérer (-2);

L'ensemble -5, 6, 9, 8, -2 a été inséré.

Retourner un itérateur

La classe SET n'a pas l'opérateur de carré-crochets, comme le tableau. Donc, pour scanner les éléments de l'ensemble, un itérateur est nécessaire. Si le nom de l'ensemble est ST, l'instruction suivante renvoie un itérateur qui pointe vers le premier élément de l'ensemble:

ensemble:: iterator iter = st.commencer();

Apprécier la syntaxe de cette déclaration.

Taille de l'ensemble

L'instruction suivante renvoie la taille d'un ensemble:

int sz = st.taille();

La variable, SZ, détient la taille de l'ensemble.

Valeurs de lecture de l'ensemble

Le programme suivant utilise l'itérateur pour lire toutes les valeurs de l'ensemble:

ensemble St;
St.insérer (-5); St.insérer (6); St.insérer (9);
St.insérer (8); St.insérer (-2);
pour (ensemble:: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

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

Notez comment la boucle et l'itérateur ont été utilisés. "St.end () ”Renvoie l'itérateur End qui pointe juste après le dernier élément.

Avec les chaînes comme éléments, le module de chaîne doit être inclus avec;

#inclure

Considérez le code suivant avec des éléments de chaîne:

ensemble St;
St.insérer ("lampe de lecture"); St.insérer ("ordinateur"); St.insérer ("stylo");
St.insérer ("crayon"); St.insérer ("livre d'exercice"); St.insérer ("manuels");
pour (ensemble:: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

Ordinateur, livres d'exercices, stylo, crayon, lampe de lecture, manuels,

Notez que lorsque des valeurs sont ajoutées avec la commande insert (), l'ensemble est trié en interne.

Notez également que, pour utiliser les chaînes, la classe String doit être incluse; Sinon, ce sont les pointeurs des chaînes qui seront triées et non les littéraux alphabétiques à cordes eux-mêmes.

set (const set & x)
Il s'agit d'un constructeur de set, qui prendrait l'identifiant d'un autre ensemble comme argument, pour construire un nouvel ensemble. Le code suivant illustre ceci:

Définir ST;
St.insérer (-5); St.insérer (6); St.insérer (9); St.insérer (8); St.insérer (-2);
ensemble ST2 (ST);
pour (ensemble:: iterator iter = st2.commencer(); iter != ST2.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

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

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

Ceci est un constructeur, où les deuxième et troisième arguments sont facultatifs. Lorsqu'ils ne sont pas donnés, les valeurs par défaut sont choisies par c++. Le premier argument est un initializer_list (Array littéral). Le code suivant illustre l'utilisation du constructeur:

ensemble st ('b', 'm', 'a', 'c', 't', 'o', 'q');
pour (ensemble:: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

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

Notez que la sortie est triée malgré le fait que l'entrée est un initialiseur non trié_list.

Note: Avec l'initizalizer_list, les parenthèses de l'appel du constructeur peuvent être omises, comme dans le code suivant:

ensemble st 'b', 'm', 'a', 'c', 't', 'o', 'q';
pour (ensemble:: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est toujours:

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

Copier les constructeurs

Un ensemble peut être créé en attribuant l'identifiant d'un autre ensemble à l'identifiant du nouvel ensemble, ou en attribuant l'ensemble littéral (array littéral) à l'identifiant du nouvel ensemble.

set & operator = (const set & x)
Cela attribue l'identifiant d'un autre ensemble à l'identifiant d'un nouvel ensemble comme indiqué, donc:

ensemble St;
St.insérer ('b'); St.insérer ('m'); St.insérer ('a'); St.insérer ('c');
St.insérer ('t'); St.insérer ('o'); St.insérer ('q');
ensemble ST2 = ST;
pour (ensemble:: iterator iter = st2.commencer(); iter != ST2.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

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

set & operator = (initializer_list)
Cela attribue l'ensemble littéral (array littéral) à l'identifiant d'un nouvel ensemble comme indiqué, donc:

ensemble st = 'b', 'm', 'a', 'c', 't', 'o', 'q';
pour (ensemble:: iterator iter = st.commencer(); iter != st.fin(); iter ++)
couter << *iter << ", ";
couter << endl;

La sortie est:

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

Conclusion

L'ensemble littéral en C ++ est similaire à celui des mathématiques. Un ensemble, qui n'est pas trié devient tri, ascendant, après la construction (création) avec les paramètres par défaut. STD signifie la norme. Les façons courantes de créer un ensemble ont été illustrées ci-dessus.