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 ;
}