Ich bin sicher, Sie wissen, dass ein std::vector<X>
eine ganze Reihe von X
Objekten speichert , oder? Aber wenn Sie eine haben std::map<X, Y>
, speichert sie tatsächlich eine ganze Reihe von std::pair<const X, Y>
s. Genau das ist eine Karte - sie verbindet die Schlüssel und die zugehörigen Werte.
Wenn Sie über a iterieren std::map
, iterieren Sie über alle diese std::pair
s. Wenn Sie einen dieser Iteratoren dereferenzieren, erhalten Sie einen std::pair
, der den Schlüssel und den zugehörigen Wert enthält.
std::map<std::string, int> m = /* fill it */;
auto it = m.begin();
Wenn Sie dies jetzt tun *it
, erhalten Sie das std::pair
für das erste Element in der Karte.
Jetzt std::pair
gibt Ihnen der Typ über zwei Elemente Zugriff auf seine Elemente: first
und second
. Wenn Sie also einen std::pair<X, Y>
Anruf haben p
, p.first
ist dies ein X
Objekt und p.second
ein Y
Objekt.
Jetzt wissen Sie also, dass Sie durch die Dereferenzierung eines std::map
Iterators eine erhalten std::pair
. Anschließend können Sie mit first
und auf seine Elemente zugreifensecond
. Zum Beispiel (*it).first
werden Sie den Schlüssel geben und (*it).second
werden Sie den Wert geben. Diese sind äquivalent zu it->first
und it->second
.
std::map
speichert einen Schlüssel und einen Wert .map::iterator.second
bezieht sich auf den Wert .