2013-03-07 3 views
0

J'ai une liste avec des noeuds avec cette structure:Comment rechercher Stl élément de liste avec Alghorithm Rechercher()

private: 
    char namefield[30]; 
    char tam[3]; 
    char type[1]; 
}; 

Je veux trouver et élément avec la fonction de recherche de alghorithm classe mais je veux le faire avec la propriété nameField de l'élément, la fonction find a un élément à trouver comme paramètre, mais la chose est que je veux envoyer une propriété du nœud au lieu du nœud lui-même ..

Répondre

0

Vous pouvez utiliser la fonction find_ifhttp://www.cplusplus.com/reference/algorithm/find_if/. Vous définissez un prédicat (fonction de comparaison) pour votre structure qui renvoie true si les champs name des deux structures sont vrais. Ou quelque chose comme ça

class Cmp : public std::unary_function<mystruct, bool> { 
    std::string m_str; 
public: 
    Cmp(const std::string &str) : m_str(str) {} 
    bool operator()(const mystruct &val) const { 
     return m_str.compare(val.namefield) ==0; 
    } 
}; 

std::find_if(cont.begin(), cont.end(), Cmp("foo")); 

cont est le conteneur de votre struct

+0

@ChristianRau Merci pour l'édition – Michael

Questions connexes