首頁 >後端開發 >C++ >如何避免迭代循環中出現無關的分隔符號:C 11 解決方案?

如何避免迭代循環中出現無關的分隔符號:C 11 解決方案?

DDD
DDD原創
2024-10-30 21:13:02605瀏覽

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

避免迭代循環中出現無關的分隔符號

迭代元素序列通常涉及列印或執行某些需要在連續元素之間使用分隔符號的操作。然而,在最後一個元素後面加上分隔符號可能是不可取的。

非破壞性迭代器的傳統方法

使用C 風格的for 循環迭代數組或使用非破壞性迭代器時對於未知大小的序列,最後一個元素的特殊大小寫可以防止額外的分隔符號:

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

使用C 11 構造的更優雅的解決方案

C 11 引入了一個更優雅的解決方案,而不是顯式的特殊大小寫實現此目的的更簡潔的方法:

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

在這種方法中,指標變數sep 追蹤分隔符號是否已列印。當遇到第一個元素時,sep 為空,因此不列印任何內容。隨著循環的進行,sep 被指派了分隔符號值。對於所有後續元素,分隔符號列印在元素之前。

以上是如何避免迭代循環中出現無關的分隔符號:C 11 解決方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn