Comment pouvons-nous utiliser stl priority_queue code> pour struct?
Toute illustration forte> forte> de poussée et de sautilation, où la struct a plusieurs types de données? de
Dire: structure chose {int a; Char b;} verre [10]; code>. Comment puis-je mettre cette structure sur priority_queue à l'aide de "int A" pour la commande? P>
3 Réponses :
voici une réponse légèrement modifiée à votre question originale, qui Vous avez supprimé sans raison apparente. L'original contenait suffisamment d'informations pour que vous puissiez comprendre cela, mais cela va ici: fournir une comparaison inférieure à la comparaison qui utilise le Tout ce que vous avez à faire est de fournir un cocceur qui implémente une comparaison moins que la comparaison avec une forte commande stricte, ou un opérateur moins que d'opérateur pour votre classe la mise en œuvre. Cette structure satisfait aux exigences: p> puis p> int code> à comparaison.
Merci ^ _ ^ & Juste 1 dernière chose: comment vais-je pousser dire (3, a) à la file d'attente DIRECLTY? Je ne sais pas comment mettre (3, a) à "chose truc = ... b>".
Dans C ++ 11, vous pouvez dire q.push (chose {42, 'x'}) code> ou
q.emplace (42, 'x') code>. Si vous n'avez pas de support C ++ 11, vous devez donner une chose
code> un constructeur.
Est-il nécessaire que l'argument soit une référence de const? Pourquoi ne pouvons-nous pas simplement faire l'opérateur de Bool <(chose rhs)?
Surcharge Opérateur pour
Chose code>:
struct thing
{
int a;
char b;
bool operator<(const thing &o) const
{
return a < o.a;
}
};
priority_queue<thing> pq;
thing t1, t2, t3;
// ...
pq.push(t1);
pq.push(t2);
// ...
t3 = pq.top();
pq.pop();
Vous devez implémenter une fonction de comparaison ou un opérateur de surcharge pour indiquer la queue prioritaire sur laquelle vous souhaitez trier vos données personnalisées. Lorsque la file d'attente prioritaire trier vos données, il aura besoin d'un moyen de savoir comparer entre eux. Vous devez spécifier cela en faisant passer une fonction à la file d'attente prioritaire ou à la surcharge de la classe de données personnalisée ou de la structure. p>
Vous pouvez vérifier Cette répond. Ce pourrait vous aider. J'ai essayé d'expliquer plusieurs façons d'utiliser une file d'attente prioritaire pour les types de données personnalisés. p>