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
Freigeben: 2024-12-21 08:13:09
Original
844 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage