So verwenden Sie die bereichsbasierte for-Schleife in C 11 richtig
Die bereichsbasierte for-Schleife ist ein prägnanter und leistungsstarker Iterator-Traversalmechanismus, der in eingeführt wurde C 11 eingeführt in. Es wird verwendet, um einen Container oder eine andere iterierbare Sequenz zu durchlaufen und Elemente in der Sequenz über eine oder mehrere Variablen zu referenzieren. So verwenden Sie eine bereichsbasierte for-Schleife korrekt:
Syntax
for (auto elem : container) {
// 代码体
}
Nach dem Login kopieren
Wobei:
- Das Schlüsselwort auto bedeutet, dass der Compiler automatisch auf Folgendes schließt Elementtyp.
- elem ist die Iteratorvariable für die Elemente in der Schleife.
- Container ist der Container oder die iterierbare Sequenz, über die iteriert werden soll.
Elementerfassungsmodus
Bei Verwendung einer bereichsbasierten for-Schleife können Sie einen der folgenden drei Elementerfassungsmodi auswählen:
-
Drücken Sie Werterfassung (Auto-Elem): Erstellt eine lokale Kopie eines Elements. Dies funktioniert für Typen, deren Elemente kostengünstig zu kopieren sind (z. B. int, double usw.).
-
Erfassung durch Referenz (auto&elem): Direkte Referenzierung des Elements im Container. Dies wird zum Ändern von Elementen oder Typen verwendet, bei denen ein Kopieren vermieden werden muss.
-
Proxy per Referenz erfassen (auto&&elem): Zum Durchlaufen eines Containers mit einem „Proxy-Iterator“ (z. B. std::vector).
Beobachten oder ändern
Bereichsbasierte for-Schleifen können für zwei Hauptzwecke verwendet werden:
-
BeobachtenElemente: Verwendung const auto&elem erfasst Elemente, um sicherzustellen, dass das ursprüngliche Element nicht geändert wird.
-
Element ändern: Verwenden Sie auto&elem, um das Element zu erfassen und das ursprüngliche Element direkt zu ändern.
Richtlinien
Um bereichsbasiert für richtig zu verwenden Beachten Sie für Schleifen die folgenden Richtlinien:
- Für beobachtete Elemente verwenden Sie:
for (const auto& elem : container) // 按引用捕获常量
Nach dem Login kopieren
- Für geänderte Elemente verwenden Sie:
for (auto& elem : container) // 按引用捕获
Nach dem Login kopieren
- Wenn der Container „proxy Iterator“, Verwendung:
for (auto&& elem : container) // 按引用捕获 proxy
Nach dem Login kopieren
Hinweise im generischen Code
Im generischen Code wird empfohlen, const auto&elem zu verwenden, um Elemente zur Beobachtung zu erfassen, und auto&& ;elem erfasst Elemente zur Änderung, da diese Methoden mit verschiedenen Arten von Containern und Elementen funktionieren.
Das obige ist der detaillierte Inhalt vonWie kann ich bereichsbasierte For-Schleifen in C 11 korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!