Heim  >  Artikel  >  Backend-Entwicklung  >  Wie iteriere ich mit bereichsbasierten for-Schleifen in C 11 und höher durch eine std::map?

Wie iteriere ich mit bereichsbasierten for-Schleifen in C 11 und höher durch eine std::map?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 17:34:31326Durchsuche

How do I iterate through a std::map using range-based for loops in C  11 and later?

Bereichsbasierte for()-Schleife mit std::map

In C 11 und späteren Versionen bereichsbasierte for()-Schleifen bieten eine bequeme Möglichkeit, Container zu durchlaufen. Bei der Iteration über einfache Container wie Vektoren ist jedes Element als Schleifenvariable leicht zugänglich. Bei komplexen Containern wie Karten ist es jedoch entscheidend, den Typ der Schleifenvariablen zu verstehen.

Bedenken Sie den folgenden Codeausschnitt:

<code class="cpp">std::map<foo, bar> testing = { /*...blah...*/ };
for (auto abc : testing)
{
    std::cout << abc << std::endl;
    std::cout << abc->first << std::endl;
}

In diesem Szenario ist jedes Element ein Standard: :map::value_type, was im Wesentlichen ein std::pair ist. Das bedeutet:

Für C 17 und höher:

<code class="cpp">for (auto& [key, value] : myMap) {
    std::cout << key << " has value " << value << std::endl;
}</code>

Für C 11 und C 14:

<code class="cpp">for (const auto& kv : myMap) {
    std::cout << kv.first << " has value " << kv.second << std::endl;
}</code>

Alternativ können Sie kv als const markieren, um eine schreibgeschützte Ansicht der Werte zu erhalten.

Das obige ist der detaillierte Inhalt vonWie iteriere ich mit bereichsbasierten for-Schleifen in C 11 und höher durch eine std::map?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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