Maison  >  Article  >  développement back-end  >  Comment déclarer une file d'attente prioritaire avec des comparateurs personnalisés en C ?

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

DDD
DDDoriginal
2024-10-25 05:28:02591parcourir

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>
  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>

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>

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!

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