C++ - STL--make_heap mit pair<int,Zeichenfolge> als Datentyp
Ich wissen, wie funktioniert heap arbeiten und wie Sie ordnet min und max Elemente. Es ist einfach, wenn der Vektor enthält nur int
anwenden make_heap in STL. Aber wie wendet man make_heap()
wenn Vektor enthält die Struktur von string und int. Iwant zu machen heap basiert auf int
Wert in der Struktur.
Bitte sagen Sie mir, was zu tun ist.
- Was haben Sie versucht? Insbesondere haben Sie versuchen, geben einen expliziten Vergleich-Funktion?
- Ich weiß nicht, wie zu tun, Vergleich Spaß...
- Es ist schon eine Weile her, seit ich habe gesucht, aber nicht
pair
kommen mit einer Ordnung, die tut, was Sie wollen? - Die Standard-Reihenfolge für
std::pair
ist die lexikographische Bestellung. Das bedeutet, dass beide Elemente des Paares berücksichtigt werden, für die Bestellung, nicht nur die erste. Für die heap-die OP ist zu bauen, kann es (vielleicht) egal, aber für ein stabiles Sortieren würde. - Sie brauchen nicht Ihre eigenen Vergleich-Funktion. Siehe meine Antwort und die links darin.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Verfügung zu stellen ist-Vergleich-Funktion der Struktur:
s1.y == s2.y
) in den Komparator?Ja, Sie können
std::make_heap
mitstd::pair<int, std::string>
direkt, weilstd::pair
hat die weniger-als-Vergleichoperator<
. Es gibt sogar ein Beispiel in der Referenz oben verlinkten Verwendung eines bestimmten Instanziierungstd::pair
.