Le set range automatiquement par Key ... Mais tu peux préciser toi même ton propre algo de rangement, en paramètre template ...
cf :
http://www.sgi.com/tech/stl/set.html
Citation:
set<Key, Compare, Alloc>
Key est le type que tu vas stocker dans ton set.
Compare est le prédicat(un type-fonction renvoyant un bool) qui va permettre de ranger comme tu le souhaites ...
Alloc sert lui à une allocation personnalisée.
Seul Key est obligatoire.
Avec tout cela, tu as assez pour faire ce que tu veux avec les set.
Citation:
Ce qui me gène dans ce lien en particulier, c'est l'absence totale de référence aux sets, mis à part l'#include <set>. Dois-je en conclure que le fonction std::sort() peut également s'utiliser sur des sets ?
Je pense que oui, mais c'est inutile puisque tu peux personnaliser le rangement, cf lien ci-dessus.
Citation:
Par ailleurs, ma question relative aux clés reste également en suspens ; quel est l'intérêt de cette clé dans la mesure où je veux disposer d'une liste finalement dans laquelle les éléments que je range le seront en fonction de la valeur de leurs attributs (il s'agit de structs) ?
La clé sert pour le fait que set a un algo de rangement par défaut, et il est utilisé quand tu ne précises pas le deuxième paramètre templates!
Exemple si tu fais un set<int>, le set sera capable de ranger sans que tu lui demandes tes int dans l'ordre, et le fera automatiquement à chaque modification.
Et tu peux stocker des objets instanciés par des structures, des class, ou bien les types fondamentaux(int, char, ...)
Citation:
Comment s'utilise la fonction comp_value() ?
http://www.cppreference.com/cppset/value_comp.html
Elle retourne la fonction qui permet de ranger les éléments du set, cf ci-dessus.
Citation:
Enfin, comment puis-je être assuré que dès l'insertion de mon élément dans mon set, il soit ordonné parmi les autres ?
Ca, faut faire confiance aux créateurs de la stl.
C'est la principale particularité du set, de ranger automatiquement les éléments dès qu'une modification est effectuée, donc bon :lol: