Les Ensembles en C++
Qu'est-ce qu'un ensemble ?
Les ensembles sont des conteneurs associatifs qui enregistrent des éléments uniques. Contrairement à d'autres structures de données, ils permettent d'accéder aux éléments via leur valeur, qui agit également comme clé d'accès. Cette valeur est immuable : une fois qu'elle est assignée, elle ne peut plus être modifiée. Néanmoins, il est possible d'ajouter de nouveaux éléments ou d'en supprimer des existants.
Syntaxe de base
Pour créer un ensemble en C++, utilisez la syntaxe suivante :
std::set setName;
Il vous suffit d'utiliser le mot clé set
suivi du type de données et d'un nom pour créer un ensemble.
Exemple d'utilisation
Dans l'exemple suivant, nous allons initialiser un ensemble, y insérer des valeurs à l'aide de la méthode .insert()
, puis afficher les valeurs de l'ensemble :
#include
#include
int main() {
// Initialiser l'ensemble
std::set numSet;
// Insérer des valeurs dans l'ensemble
numSet.insert(25);
numSet.insert(42);
numSet.insert(10);
numSet.insert(19);
// Afficher l'ensemble
std::set::iterator iter;
for (iter = numSet.begin(); iter != numSet.end(); iter++) {
std::cout << *iter << " ";
}
}
Cet exemple produira la sortie suivante :
10 19 25 42
Notez que, par défaut, les valeurs dans un ensemble sont triées par ordre croissant.
Changer la fonction de comparaison
Il est possible de modifier la fonction de comparaison par défaut pour trier les valeurs en ordre décroissant. Pour cela, utilisez la syntaxe suivante :
std::set> setName;
Assurez-vous que le type de données pour la fonction de comparaison concorde avec le type de l'ensemble.
Exemple de comparaison différente
L’exemple précédent peut être ajusté pour trier en ordre décroissant grâce à ce code :
#include
#include
#include
int main() {
// Initialiser l'ensemble avec un tri décroissant
std::set> numSet;
numSet.insert(25);
numSet.insert(42);
numSet.insert(10);
numSet.insert(19);
// Afficher l'ensemble
std::set::iterator iter;
for (iter = numSet.begin(); iter != numSet.end(); iter++) {
std::cout << *iter << " ";
}
}
Cela affichera :
42 25 19 10