C 11 bietet verschiedene Methoden für die Containeriteration, einschließlich bereichsbasierter Schleifen und std::for_each. Welcher Ansatz ist jedoch am effektivsten, wenn über mehrere Container gleicher Größe iteriert wird, wie zum Beispiel:
for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }
Der empfohlene Ansatz ist das Iterieren über die Indizes mit eine bereichsbasierte for-Schleife:
for(unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
Where indices ist eine einfache Wrapper-Funktion, die einen Lazy-Bereich für generiert Indizes. Diese Methode entspricht der Effizienz der manuellen for-Schleife.
Bei häufigem Vorkommen dieses Musters sollten Sie erwägen, die Zip-Funktion zu verwenden, um eine Reihe von Tupeln zu erstellen, die gepaarte Elemente kombinieren :
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
Dieser Ansatz vereinfacht den Code und verbessert die Lesbarkeit.
Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, in C über mehrere Container gleichzeitig zu iterieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!