Ich habe das folgende Code-Schnipsel:C++ Stream und Operator >> Vorrang
std::stringstream stream("ABC 123 CBA 321");
std::unordered_map<std::string, int> map;
std::string key;
Und ich versuche, die Daten wie folgt zu lesen:
stream>>key>>map[key];
, die als neu beschrieben werden kann:
operator>>(stream, key).operator>>(map[key]);
beide >>
und .
Betreiber betrachtet haben nach rechts Assoziativität links, können Sie Plädoyer Warum wird map[key]
ausgewertet, bevor key
aus dem Stream gelesen wird?
Drucken der Karte:
for(auto& it : map)
{
std::cout<<it.first<<" "<<it.second<<std::endl;
}
Ergebnisse in:
123
ABC 321
Ja, es ist ein Raum vor 123
Vielleicht wäre es auch nett, eine Anmerkung zur strengen Bewertungsreihenfolge von C++ 17 hinzuzufügen. –
@ PatrickM'Bongo: Ich habe damit nicht Schritt gehalten. –