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
Libérer: 2024-11-01 09:15:03
original
373 Les gens l'ont consulté

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>
Copier après la connexion

Maintenant, disons que nous avons un vecteur de monstres :

<code class="cpp">std::vector<monster> monsters;</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal