Bonjour à tous,
Dans le but de me faciliter la vie, je voudrais me faire une méthode template qui me détermine si un élément est présent dans une collection:
Le truc c'est que je voudrais également bénéficier des optimisations dans le cas de collections ordonnées, je pensais donc faire un truc du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<typename Collection> bool isIn(Collection const& c, typename Collection::value_type const& e) { return std::find(c.begin(), c.end(), e) != c.end(); }
Le truc c'est que pour les std::set, le key_type et le value_type font référence au même type, je me retrouve donc avec une double instantiation avec les même types à la compilation et je me fait donc jeter comme un malpropre. Auriez-vous une idée pour pouvoir contourner ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<typename Collection> bool isIn(Collection const& c, typename Collection::key_type const& e) { return c.find(e) != c.end(); }
Merci
Partager