Heim >Backend-Entwicklung >C++ >Wie verwende ich bereichsbasierte For-Schleifen in C 11 effektiv?

Wie verwende ich bereichsbasierte For-Schleifen in C 11 effektiv?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 08:13:09848Durchsuche

How Do I Effectively Use Range-Based For Loops in C  11?

Bereichsbasierte for-Schleifen in C 11

Syntax und Verwendung

C 11 führte bereichsbasierte for-Schleifen als prägnante und ausdrucksstarke Möglichkeit ein Über Container iterieren. Die Syntax lautet:

for (range_declaration : container) {
  // body of the loop
}

wobei:

  • range_declaration eine Variable deklariert, die jedes Element des Containers enthält.
  • container ist der Container, den Sie iterieren möchten vorbei.

Erfassung nach Referenz oder Wert

Die Variable in der „range_declaration“ kann durch Referenz oder Wert mithilfe der folgenden Syntax erfasst werden:

  • auto erfasst das Element nach Wert.
  • auto& erfasst das Element durch nicht konstante Referenz.
  • const auto& erfasst das Element durch const-Referenz.

Für Beobachtendie Elemente, bei denen Sie sie nicht ändern müssen, sollten Sie const auto& verwenden. Dies verhindert unnötige Kopien und stellt sicher, dass die Originalelemente nicht verändert werden.

Wenn Sie die Elemente ändern möchten, verwenden Sie auto&.

Beachten Sie, dass für Container mit Proxy-Iteratoren (wie std::vector) verwenden, müssen Sie auto&& verwenden, um die Elemente zu erfassen Wert.

Richtlinien für die Verwendung bereichsbasierter For

Beachten Sie die folgenden Richtlinien, wenn Sie bereichsbasiertes For verwenden:

  • Für die Beobachtung von Elementen:

    • for (const auto& elem : Container) (Erfassung durch const Referenz)
    • Wenn Elemente günstig zu kopieren sind (z. B. ints), können Sie for (auto elem : container) (Erfassung nach Wert) verwenden.
  • Zum Ändern von Elementen:

    • for (auto& elem : Container) (Erfassung durch nicht-konstante Referenz)
    • Für Proxy-Iteratoren (z. B. std::vector) verwenden Sie for (auto&& elem : Container) (Erfassung durch &&).

Überlegungen zu generischem Code

In generischem Code, bei dem Sie den Typ der Elemente nicht kennen iteriert, verwenden Sie:

  • for (const auto& elem : Container) zum Beobachten von Elementen.
  • for (auto&& elem : Container) zum Ändern von Elementen (funktioniert sowohl für reguläre als auch für Proxy-Iteratoren ).

Das obige ist der detaillierte Inhalt vonWie verwende ich bereichsbasierte For-Schleifen in C 11 effektiv?. 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