Heim > Backend-Entwicklung > C++ > Wie kann ich den Komparator für eine Karte in C anpassen, um Schlüssel nach ihrer Länge zu sortieren?

Wie kann ich den Komparator für eine Karte in C anpassen, um Schlüssel nach ihrer Länge zu sortieren?

Susan Sarandon
Freigeben: 2024-11-04 08:02:02
Original
564 Leute haben es durchsucht

How can I customize the comparator for a map in C   to sort keys by their length?

Komparatoren für Karten anpassen

In C verwendet std::map einen Komparator, um seine Elemente zu ordnen. Standardmäßig verwenden Karten den Kleiner-als-Operator (<), um Schlüssel zu vergleichen. Es ist jedoch möglich, dieses Standardverhalten zu überschreiben, indem Sie einen benutzerdefinierten Komparator bereitstellen.

In dieser Frage wird erläutert, wie Sie den Komparator für eine Karte anpassen, um Schlüssel nach ihrer Länge statt alphabetisch zu sortieren. Hier ist die Lösung:

Lösung mit einer benutzerdefinierten Klasse

std::map ermöglicht bis zu vier Vorlagentypargumente, wobei das dritte ein Komparator ist. Hier ist ein Beispiel einer benutzerdefinierten Klasse, die einen Komparator basierend auf der Zeichenfolgenlänge implementiert:

<code class="cpp">struct cmpByStringLength {
    bool operator()(const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};
Nach dem Login kopieren

Um diesen benutzerdefinierten Komparator zu verwenden, erstellen Sie eine Karte mit den folgenden Vorlagenargumenten:

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</p>
<p><strong>Lösung mit Konstruktorargument</strong></p>
<p>Alternativ können Sie einen Komparator an den Konstruktor der Karte übergeben. Diese Syntax entspricht dem vorherigen Beispiel:</p>
<pre class="brush:php;toolbar:false"><code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap(cmpByStringLength());</code>
Nach dem Login kopieren

Hinweis: Beim Vergleich nach Länge darf in der Karte nur eine Zeichenfolge jeder Länge als Schlüssel vorhanden sein.

Das obige ist der detaillierte Inhalt vonWie kann ich den Komparator für eine Karte in C anpassen, um Schlüssel nach ihrer Länge zu sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage