Ouais surtout que ca marche pas du tout mon truc impossible de faire une lambda… B) J’ai du me resoudre a ce truc moins w4rl0rd:
[code]class CountMaxFunctor
{
private:
vector m_v;
public:
CountMaxFunctor(const vector &v) : m_v(v) {}
public:
pair<int, int> operator ()(int i)
{
return make_pair(count(m_v.begin(), m_v.end(), i), i);
}
};
pair<int, int> countmax(const vector &vecBlah)
{
vector<pair<int, int> > temp;
CountMaxFunctor f(vecBlah);
transform(vecBlah.begin(),
vecBlah.end(),
back_inserter(temp),
f);
return *max_element(temp.begin(), temp.end());
}[/code]
Note, la comparaison par defaut de pair fait une comparaison first, puis second, d’ou l’ordre dans la paire. Enfin ca fait chier de faire un functor pour un truc aussi trivial, mais impossible malgre ma tentative de lambda:
[code]vector::const_iterator b = vecBlah.begin();
vector::const_iterator e = vecBlah.end();
transform(vecBlah.begin(),
vecBlah.end(),
back_inserter(temp),
bind(&make_pair<int, int>,
_1,
bind(&count<vector::const_iterator, int>, b, e, _1)()));[/code]
Passe pas… Probleme de passage de type rahhh. Je sens que je vais m’en retourner 10 fois dans mon sommeil.
Sinon je ne suis pas d’accord avec toi, en utilisant les algorithmes de la STL on arrive a detecter des la compilation des bugs sans compter que tu elimines tous les bugs potentiels du aux boucles mal faites, erreur d’etourderies (generalement detectees a la compilation), bozons fous, etc. Ca demande juste un petit temps d’adaptation. Regarde le code, pas de if, pas de for, pas de while, pas de new, pas de delete, bref tous les nids a bugs et buffer overflows, erreurs d’inatention, raus.
Apres ca depend du taff, de comment le code va vivre, les vaches, la formation de l’equipe, les motos toussa…