首页 >后端开发 >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