Comment utiliser find_if avec un vector et un functor ?

Le
mderie
En deux mots, Obj represente un type d'objet quelquonque (en fait un
POD) :

class Obj;
typedef vector<Obj> Objs;

Comment plus tard tester la valeur d'une propriete de l'objet (la
cle) :

class ObjFunctor
{
private:
string m_Key;

public:
ObjFunctor(const string& key) : m_Key(key) {}
bool operator==(const Obj& obj) { return m_Key == obj.getKey(); }
};

#define KEY_VALUE "foo"

Objs objs;

if (find_if(objs.begin(), objs.end(), ObjFunctor(KEY_VALUE)) !=
objs.end()) // ==> Template deduction failed !!!
{


Rem : je ne souhaite pas utiliser un map (multimap)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien LE LEZ
Le #312861
On 8 Nov 2007 11:18:39 -0800, mderie
class ObjFunctor


Ce n'est pas un foncteur, puisqu'il n'y a pas d'opérateur ().

Si tu veux transformer cette classe en un foncteur, il faudrait
écrire :

class ObjFunctor
{
public:
ObjFunctor(const string& key) : m_Key(key) {}
bool operator () (const Obj& obj) const
{ return m_Key == obj.getKey(); }
private:
string m_Key;
};

mderie
Le #312860
On Nov 8, 8:25 pm, Fabien LE LEZ
On 8 Nov 2007 11:18:39 -0800, mderie
class ObjFunctor


Ce n'est pas un foncteur, puisqu'il n'y a pas d'opérateur ().

Si tu veux transformer cette classe en un foncteur, il faudrait
écrire :

class ObjFunctor
{
public:
ObjFunctor(const string& key) : m_Key(key) {}
bool operator () (const Obj& obj) const
{ return m_Key == obj.getKey(); }
private:
string m_Key;

};


Ok merci bcp !!!


Fabien LE LEZ
Le #312859
On Fri, 09 Nov 2007 07:48:10 -0000, mderie
[...]


Je t'invite à lire cette page attentivement :
http://www.usenet-fr.net/fr.usenet.reponses/usenet/repondre-sur-usenet.html

Publicité
Poster une réponse
Anonyme