Wofür verwendet man C 11s bereichsbasiert richtig?
C 11 führte eine neue Methode zur Iteration über Container mithilfe des Bereichs ein -basierte for-Schleifen, die prägnanter und einfacher zu lesen sind als herkömmliche for-Schleifen. Es müssen jedoch einige Regeln befolgt werden, um es korrekt zu verwenden.
Bei der Verwendung von bereichsbasiertem for geben Sie den Typ der Variablen an, über die Sie iterieren möchten, gefolgt von einem Doppelpunkt (:) und dann Container, den Sie durchlaufen möchten. Beispiel:
for (int i : {1, 2, 3}) { // Do something with i } // Iterate over a vector of strings for (string s : my_vector) { // Do something with s }
Der Variablen, die Sie in der for-Anweisung angeben, wird beim Durchlaufen automatisch der Wert jedes Elements im Container zugewiesen. Dies macht es sehr praktisch, über Datensammlungen zu iterieren.
Welche Syntax sollte verwendet werden? for (auto elem : Container), for (auto& elem : Container) oder for (const auto& elem : Container)?
Die Syntax, die Sie verwenden sollten, hängt davon ab, ob Sie die Elemente in ändern möchten die Sammlung oder nicht. Wenn Sie die Elemente ändern möchten, sollten Sie for (auto& elem : Container) verwenden. Wenn Sie die Elemente nicht ändern möchten, können Sie entweder for (auto elem : Container) oder for (const auto& elem : Container) verwenden.
Die Verwendung von auto in der for-Anweisung bedeutet, dass der Compiler dies automatisch tut Leiten Sie den Typ der Variablen ab. Das ist praktisch, kann aber manchmal zu Fehlern führen, wenn der Compiler den Typ nicht korrekt ableiten kann. Wenn Sie nicht sicher sind, welchen Typ die Variable haben soll, ist es sicherer, sie explizit anzugeben.
Die Verwendung von const in der for-Anweisung bedeutet, dass die Variable nicht innerhalb der Schleife geändert werden kann. Dies ist nützlich, wenn Sie sicherstellen möchten, dass die Elemente in der Sammlung nicht versehentlich geändert werden.
Beispiel:
// Modify the elements in a vector vector<int> my_vector = {1, 2, 3, 4, 5}; for (auto& elem : my_vector) { elem *= 2; } // Do something with the modified vector for (auto elem : my_vector) { cout << elem << endl; } // Iterate over a vector of const strings const vector<string> my_const_vector = {"Hello", "World", "!"}; for (const auto& elem : my_const_vector) { // Do something with elem cout << elem << endl; }
Im ersten Beispiel ändern wir die Elemente im Vektor, indem wir sie mit 2 multiplizieren. Im zweiten Beispiel iterieren wir über einen konstanten Vektor aus Zeichenfolgen und drucken jedes Element aus. Beachten Sie, dass wir die Elemente in einem const-Vektor nicht ändern können.
Fazit:
Range-based for ist ein leistungsstarkes Tool, mit dem Sie Ihren Code prägnanter und einfacher gestalten können lesen. Indem Sie die oben beschriebenen Regeln befolgen, können Sie bereichsbasiert für die korrekte Iteration über Datensammlungen verwenden.
Das obige ist der detaillierte Inhalt vonWie wählt man die richtige Syntax für die bereichsbasierte For-Schleife von C 11 aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!