Utiliser un std::set avec lambda comme attribut d'une classe
Bonjour,
Je suis en train d'écrire un petit programme qui (entre autres) utilisent deux classes.
Code:
1 2 3 4 5 6 7 8 9 10 11
| class Film {
private :
int ordreSortie;
}
class Franchise {
private :
conteneur<Film*> films;
} |
J'ai besoin d'un attribut dans Franchise pour contenir tous les Films :
- Je veux que les Films soient ordonnées en fonction de leur attribut ordreSortie -> Donc pas de std::vector
- Je n'ai pas besoin d'accéder aux films autrement que séquentiellement (parcourir tous les films dans l'ordre) -> Donc pas besoin de std::map
Donc je suis parti pour utiliser un std::set
J'aimerais ne pas surcharger l'opérateur < parce que conceptuellement, j'ai envie de les hiérarchiser d'une autre manière. C'est uniquement dans ce std::set que l'ordre de sortie sert à les classer.
Du coup, je voulais utiliser une sorte de lambda expression comme comparateur :
Code:
set<Film*, [](Film* f1, Film* f2){return f1->getOrder() < f2->getOrdre();}>
J'ai trouvé plusieurs résultats sur Internet (https://stackoverflow.com/questions/...set-comparator) du genre :
Code:
1 2
| auto cmp = [](Film* a, Film* b) { return ... };
std::set<int, decltype(cmp)> s(cmp); |
Le problème, c'est que je ne vois pas comment le faire marcher dans la définition de ma classe (franchise.h).
Est ce que c'est possible ?
Merci d'avance !