Maison > développement back-end > C++ > le corps du texte

Comment déclarer une file d'attente prioritaire avec des comparateurs personnalisés en C ?

DDD
Libérer: 2024-10-25 05:28:02
original
590 Les gens l'ont consulté

How to Declare a Priority Queue with Custom Comparators in C  ?

Déclarer une file d'attente prioritaire en C avec des comparateurs personnalisés

Lorsque vous travaillez avec des comparateurs personnalisés en C, la déclaration d'une file d'attente prioritaire peut présenter des défis. Examinons votre problème spécifique et explorons l'approche correcte.

Comme mentionné dans l'extrait de code fourni, vous utilisez bool Compare(Node a, Node b) comme fonction de comparaison, qui existe en dehors de la classe Node. Pour résoudre le problème, considérez ce qui suit :

  1. Définissez une classe de comparaison : Au lieu d'utiliser un pointeur de fonction, vous pouvez définir une classe avec un opérateur surchargé() mise en œuvre. Par exemple :

    <code class="cpp">class Compare {
    public:
        bool operator()(const Node& a, const Node& b) {
            // Your comparison logic here
        }
    };</code>
    Copier après la connexion
  2. Déclarez la file d'attente prioritaire : Une fois que vous avez défini la classe Compare, déclarez la file d'attente prioritaire en utilisant la syntaxe suivante :

    <code class="cpp">priority_queue<Node, vector<Node>, Compare> openSet;</code>
    Copier après la connexion

Alternativement, si vous ne pouvez pas définir une classe personnalisée en raison de limitations, vous pouvez utiliser std::function comme type de comparateur. Cependant, elle n'est peut-être pas aussi efficace que la première approche.

<code class="cpp">bool Compare(const Node& a, const Node& b) {
    // Your comparison logic here
}

int main() {
    std::priority_queue<Node, vector<Node>, std::function<bool(const Node&, const Node&)>> openSet(Compare);
    return 0;
}</code>
Copier après la connexion

En adhérant à l'une de ces approches, vous pouvez déclarer efficacement une file d'attente prioritaire à l'aide d'un comparateur personnalisé en C .

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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!