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.
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>
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!