在 Range-V3 中使用临时容器创建 Range 管道
处理对范围元素进行操作的第三方函数时返回一个向量,自然会出现一个问题:如何创建一个范围管道,将函数应用于每个元素并生成包含所有返回元素的单个扁平范围?
在 Range-V3 的早期版本中,尝试由于无法创建临时容器的视图,使用 view::transform 和 view::join 创建此类管道将会失败。
但是,最近的提交通过引入 view::cache1 运算符解决了这个问题,它允许将中间结果存储在临时容器中。这使得能够创建利用临时容器的范围管道,同时保持其稳健性。
为了说明此功能,让我们考虑提供的示例:
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
在此管道中,view::transform将函数 f 应用于 src 的每个元素,生成临时向量。 view::cache1 缓存这些临时向量,允许后续操作(例如 view::join)使用扁平化元素。
更新的管道确保扁平化范围 rng 具有以下属性:
该解决方案演示了range-v3 及其处理涉及临时容器的复杂范围操作的能力。
以上是如何创建范围管道,将函数应用于元素并使用 Range-V3 中的临时容器展平结果?的详细内容。更多信息请关注PHP中文网其他相关文章!