Heim  >  Artikel  >  Backend-Entwicklung  >  So vermeiden Sie überflüssige Trennzeichen in Iterationsschleifen: Eine C 11-Lösung?

So vermeiden Sie überflüssige Trennzeichen in Iterationsschleifen: Eine C 11-Lösung?

DDD
DDDOriginal
2024-10-30 21:13:02527Durchsuche

How to Avoid Extraneous Separators in Iteration Loops: A C  11 Solution?

Vermeiden überflüssiger Trennzeichen in Iterationsschleifen

Das Durchlaufen einer Folge von Elementen erfordert häufig das Drucken oder Ausführen einer Aktion, die ein Trennzeichen zwischen aufeinanderfolgenden Elementen erfordert. Das Hinzufügen eines Trennzeichens nach dem letzten Element kann jedoch unerwünscht sein.

Traditionelle Ansätze für zerstörungsfreie Iteratoren

Bei der Iteration über Arrays mit einer for-Schleife im C-Stil oder bei der Verwendung zerstörungsfreier Iteratoren Bei Sequenzen unbekannter Größe kann eine spezielle Groß-/Kleinschreibung des letzten Elements das zusätzliche Trennzeichen verhindern:

<code class="cpp">for (const auto& item : items) {
    cout << item;
    if (std::next(it) != items.cend()) {  // Not the last element
        cout << separator;
    }
}</code>

Eine elegantere Lösung mit C 11-Konstrukten

Anstelle einer expliziten Sonderschreibweise führt C 11 ein Saubererer Weg, dies zu erreichen:

<code class="cpp">const auto separator = "WhatYouWantHere";
const auto* sep = "";
for (const auto& item : items) {
    std::cout << sep << item;
    sep = separator;  // Only assign when not on the last element
}</code>

Bei diesem Ansatz verfolgt eine Zeigervariable sep, ob bereits ein Trennzeichen gedruckt wurde. Beim ersten Element ist sep leer, sodass nichts gedruckt wird. Während die Schleife fortschreitet, wird sep der Trennzeichenwert zugewiesen. Bei allen nachfolgenden Elementen wird das Trennzeichen vor dem Element gedruckt.

Das obige ist der detaillierte Inhalt vonSo vermeiden Sie überflüssige Trennzeichen in Iterationsschleifen: Eine C 11-Lösung?. 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