Maison >développement back-end >C++ >Comment rechercher efficacement des éléments dans un vecteur de structures à l'aide de std :: find_if ?

Comment rechercher efficacement des éléments dans un vecteur de structures à l'aide de std :: find_if ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 09:15:03393parcourir

How to Efficiently Find Elements in a Vector of Structs Using std::find_if?

Recherche d'éléments dans un vecteur de structures à l'aide de std::find

Lorsque vous travaillez avec des structures de données complexes telles que des structures, la recherche dans un vecteur de ces éléments peut devenir difficile . Dans ce contexte, la fonction std::find fournit une solution pour identifier des éléments spécifiques dans un vecteur.

Considérons une définition de structure comme celle-ci :

<code class="cpp">struct monster 
{
    DWORD id;
    int x;
    int y;
    int distance;
    int HP;
};</code>

Maintenant, disons que nous avons un vecteur de monstres :

<code class="cpp">std::vector<monster> monsters;</code>

Pour rechercher un élément basé sur un champ spécifique dans la structure, comme l'ID du monstre, nous devons utiliser std::find_if au lieu de std::find. std::find_if prend une fonction prédicat comme argument, ce qui nous permet de définir les critères de recherche.

Voici un exemple utilisant la bibliothèque boost :

<code class="cpp">it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
        boost::bind(&monster::id, _1) == currentMonster);</code>

Ou, si boost ne l'est pas disponible, vous pouvez créer votre propre objet de fonction find_id comme ceci :

<code class="cpp">struct find_id : std::unary_function<monster, bool> {
    DWORD id;
    find_id(DWORD id) : id(id) {}
    bool operator()(monster const& m) const {
        return m.id == id;
    }
};

it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
         find_id(currentMonster));</code>

En utilisant std::find_if et la fonction de prédicat appropriée, vous pouvez rechercher efficacement dans un vecteur de structures pour trouver des éléments spécifiques en fonction de leur variables membres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn