Abrufen des ersten Werts von der Karte in C ++


74

Ich benutze mapin C ++. Angenommen, ich habe 10 Werte in mapund möchte nur den ersten. Wie bekomme ich es?

Vielen Dank.

Antworten:


114

Eine Karte behält die Einfügereihenfolge nicht bei. Verwenden Sie *(myMap.begin())diese Option , um den Wert des ersten Paares abzurufen (das mit dem kleinsten Schlüssel bei Bestellung).

Sie können auch myMap.begin()->firstden Schlüssel und myMap.begin()->secondden Wert ermitteln.


1
myMap.begin()Gibt einen Iterator zurück. Vielleicht möchten Sie stackoverflow.com/questions/388242/…
MSalters

12
Nein, es werden Werte zurückgegeben. myMap.begin()ist ein Iterator, bei dem die Operatoren *und ->überladen sind, um sich wie ein Zeiger zu verhalten, und die Operatoren ++und --überladen sind, um Elemente in Ihrer Karte zu iterieren. Sie sollten eine Einführung über die STL lesen. Vielleicht hat jemand einen guten Link für dich?
Benoit

und wenn ich den Wert und nicht den Iterator will?
Adir

2
@adir: es wird im letzten Absatz erklärt.
Jweyrich

@ Benoit Hast du eine Vorstellung von der Art der ersten, zweiten Karte? Danke
RaHuL

12

So einfach wie:

your_map.begin()->first // key
your_map.begin()->second // value

6

begin()gibt das erste Paar zurück (genau, ein Iterator zum ersten Paar, und Sie können auf den Schlüssel / Wert als ->firstund ->secondvon diesem Iterator zugreifen )


5

Sie können den Iterator verwenden, der von der begin () -Methode der Kartenvorlage zurückgegeben wird:

std::map<K,V> myMap;
std::pair<K,V> firstEntry = *myMap.begin()

Denken Sie jedoch daran, dass der std :: map-Container seinen Inhalt in geordneter Weise speichert. Der erste Eintrag ist also nicht immer der erste Eintrag, der hinzugefügt wurde.


1
Im Gegenteil: Es speichert seinen Inhalt in einer geordneten Weise, basierend auf Vergleichen der Schlüssel!
Oliver Charlesworth

1
Ja Leute, Sie haben absolut Recht. Es wird nach Schlüsselreihenfolge bestellt. Was ich damit sagen wollte ist, dass die Reihenfolge des Einfügens nicht beibehalten wird, dh der erste hinzugefügte Eintrag zur Karte ist nicht unbedingt der am Anfang () .
Marcus Gründler

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.