Ensembles en C++
Définir (définir) — c'est un conteneur qui trie automatiquement les éléments ajoutés par ordre croissant. Mais lors de l'ajout de valeurs identiques, set n'en stockera qu'une seule instance (multiset - multiset- peut contenir des doublons). Lorsqu'un nouvel élément est ajouté à l'ensemble, il se met immédiatement en place afin de ne pas violer l'ordre de tri.
Les ensembles en C++ sont définis dans la bibliothèque de modèles standard STL via la classe set (multiset).
Les ensembles sont des arbres binaires rouge-noir. Les opérations de recherche, de suppression et d'insertion ont une complexité logarithmique.
Pour utiliser des ensembles, vous devez inclure la bibliothèque “
set” :
#include <set>
Définir la déclaration :
définir<int> monEnsemble ; // Déclaration d'un ensemble vide.
multiset<int> monEnsemble ; // Déclaration d'un multiset vide.
Fonctions pour travailler avec un ensemble (set)
empty() - vérifie l'absence d'éléments dans le conteneur
size() - Renvoie le nombre d'éléments dans le conteneur
clear() - Efface le conteneur
insert() - Insère des éléments
erase() - Supprime des éléments
count() - Renvoie le nombre d'éléments correspondant à une clé donnée
find() - Trouve un élément avec une clé spécifique
lower_bound() - Renvoie un itérateur au premier élément au moins égal à la valeur donnée
upper_bound() - Renvoie un itérateur au premier élément supérieur à la valeur spécifiée
Exemple d'ensemble et de multiensemble
#include <iostream>
#include <set>
en utilisant l'espace de noms std ;
int main()
{
définir<int> monEnsemble1 ; // a déclaré un ensemble vide
multiset<int> monEnsemble2 ; // a déclaré un multiset vide
// ajoute des éléments à l'ensemble
monEnsemble1.insert(1);
monEnsemble1.insert(2);
monEnsemble1.insert(3);
monEnsemble1.insert(1);
// ajoute des éléments au multiset
monEnsemble2.insert(1);
monEnsemble2.insert(2);
monEnsemble2.insert(3);
monEnsemble2.insert(1);
set<int>::iterator it ; // crée un itérateur
for(it = mySet1.begin(); it != mySet1.end(); it++) { // Afficher tous les éléments
cout << (*il) << " "; // ensembles
}
cout << fin ;
for(it = mySet2.begin(); it != mySet2.end(); it++) { // Afficher tous les éléments
cout << (*il) << " "; // multiensembles
}
renvoie 0 ;
}