Heim >Backend-Entwicklung >C++ >Wie kann ich in C effizient über mehrere Container gleichzeitig iterieren?
Gleichzeitiges Iterieren über mehrere Container
C 11 bietet vielseitige Iterationsmethoden für Container, wie bereichsbasierte Schleifen und std::for_each. Eine wiederkehrende Aufgabe bei der Datenmanipulation besteht jedoch darin, gleichzeitig über zwei oder mehr Container identischer Größe zu iterieren.
Bereichsbasierte Schleifen über Indizes
Für dieses spezielle Szenario: Die Iteration über die Indizes der Container mithilfe bereichsbasierter Schleifen sorgt für eine effiziente und ausdrucksstarke Lösung Lösung:
for (unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
Die Funktion „Indizes“ gibt einen verzögert ausgewerteten Bereich von Indizes für den Container zurück. Dieser Ansatz erreicht die gleiche Effizienz wie eine manuelle for-Schleife, ohne die Lesbarkeit des Codes zu beeinträchtigen.
Zip-Bereich
Für Datenstrukturen, in denen dieses Muster häufig vorkommt, verwenden Sie einen „Zip-Bereich“. " kann den Code weiter vereinfachen:
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
Die Zip-Funktion erstellt eine Reihe von Tupeln, die jeweils entsprechende Elemente aus den Eingabecontainern enthalten. Vor C 17 war eine etwas ausführlichere Syntax erforderlich:
for (auto& &items : zip(containerA, containerB)) get<0>(items) = get<1>(items);
Das obige ist der detaillierte Inhalt vonWie kann ich in C effizient über mehrere Container gleichzeitig iterieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!