C ++: STL multimap.equal_range ()

7

Ich habe diesen Code und ich kann den Teil nicht verstehen, in dem die Methode equal_range Iteratoren zurückgibt. Ich weiß, Reichweite ist Paar Objekt mit zwei Multimap-Objekte im Inneren, aber was ich nicht verstehe, ist, warum gibt es 'for (it = range.first; it != range.second; ++it)' - Was bedeutet das genau?

%Vor%     
ashur 19.09.2012, 13:00
quelle

3 Antworten

11

Die Iteratoren in dem Paar definieren den Bereich von Elementen mit Schlüsseln, die denen entsprechen, nach denen Sie in der Art [range.first, range.second) gesucht haben.

Dies bedeutet, dass Sie, um über diesen Bereich zu iterieren, mit range.first beginnen und den Iterator weiterführen, bis range.second erreicht ist, was bedeutet, dass Sie gerade aus dem gleichen Bereich herausgekommen sind. Vom Konzept her ist es dasselbe wie das, was passiert, wenn Sie über einen Bereich [container.begin(), container.end()) iterieren.

    
Jon 19.09.2012, 13:03
quelle
24

Das Ergebnis von equal_range , nämlich Ihr Objekt range , ist ein Paar von zwei Iteratoren [beginning-of-range, end-of-range) . Sie wollen also über [range.first, range.second) :

iterieren %Vor%     
Kerrek SB 19.09.2012 13:04
quelle
4

equal_range gibt ein Iteratorpaar i1, i2 zurück, so dass alle Elemente im Bereich [i1, i2) denselben Schlüssel haben. Um also mit Code 718 durch alle Städte zu iterieren, rufen Sie equal_range auf und iterieren dann vom first des zurückgegebenen Paares zum second des zurückgegebenen Paares.

    
Armen Tsirunyan 19.09.2012 13:03
quelle

Tags und Links