Je veux avoir une file d'attente prioritaire avec une commande personnalisée, mais paresseuse comme je suis, je ne veux pas définir une classe de comparaison implémentant l'opérateur().std :: priority_queue: Commande personnalisée sans définir la classe de comparateur
Je voudrais vraiment quelque chose comme ceci pour compiler:
std::priority_queue<int, std::vector<int>,
boost::bind(some_function, _1, _2, obj1, obj2)> queue;
où une_fonction est une fonction de retour bool prenant quatre arguments, la première et la deuxième étant ints de la file d'attente, et les deux derniers des objets nécessaires pour calculer la commande (références const).
(error: ‘boost::bind’ cannot appear in a constant-expression)
Mais cela ne compile pas. Même un plus simple,
std::priority_queue<int, std::vector<int>, &compare> queue;
ne compilera pas, avec comparaison étant une fonction binaire retour bool.
(error: type/value mismatch at argument 3 in template parameter list for ‘template class std::priority_queue’; expected a type, got ‘compare’)
Une suggestion?
Vous n'avez pas de parenthèse fermante sur le 'boost :: bind' ici - avant le> sur les params du template de file d'attente. Est-ce une faute de frappe dans le code posté ou dans ce que vous avez essayé de compiler? –