Ensembles triés.

Ensembles triés.

set

Voir version :

Pas de dépendances

Télécharger :

#include <set>
#include <iostream>

using namespace std;

int main()
{
    set<int> s;
    s.insert(5);    
    s.insert(15);
    s.insert(2);    
    s.insert(8);
    s.insert(27);    
    s.insert(6);
    s.insert(5);

    set<int>::iterator I;
    for(I=s.begin();I!=s.end();I++)
        cout << "element  " << *I << endl;
    return 0;
}



Commentaires

  certaines ancienne versions de visual C++ pourront vous mettre un warning (4786), n'en tenez pas compte.

  Tres simple : set garde en mémoire une liste triée d'éléments.
  Contrairement a priority_queue qui n'est capable de vous donner QUE le premier élément, et vous obligé a dépiler pour consulter
  la liste, set garde en mémoire les éléments triés.
  Dès que vous en insérez un grace a la méthode insert, il se met tout de suite a la bonne place.

  Ainsi, vous pouvez parcourir le set grace a un itérateur comme vu dans l'exemple.

  Note : set garde des éléments uniques :

  si vous insérez "5" dedans, et que vous réinsérez un autre "5" ensuite (donc l'identique), le "5" n'apparaitra pas deux fois, mais qu'une seule.
  (c'est ce qu'il se passe : j'insere le 5 deux fois, et il n'apparait qu'une fois)

  pour mettre plusieurs fois le meme éléments dans un "set", il faut utiliser "multiset" :

  remplacez simplement "set" par "multiset" (et pareil dans la définition de l'itérateur)
  et vous verrez que le 5 apparait plusieurs fois.

  (* pour info : set utilise des classes d'arbre binaire de recherche pour une optimisation des données et de la vitesse)


TRI PERSONNALISE
****************

  vous pouvez bien sur faire :

  set<truc, greater<truc> >

  ou 

  set<truc, monfoncteur>

  * pensez a modifier également la déclaration de l'itérateur dans ces cas la...
  * Le tuto précédent sur les foncteurs explique cette partie.