迭代元素序列通常涉及打印或执行某些需要在连续元素之间使用分隔符的操作。然而,在最后一个元素后面添加分隔符可能是不可取的。
使用 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 引入了一个更优雅的解决方案,而不是显式的特殊大小写实现此目的的更简洁的方法:
<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中文网其他相关文章!