首页 >后端开发 >C++ >如何将范围管道与临时容器一起使用?

如何将范围管道与临时容器一起使用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 15:58:03219浏览

How Can I Use Range Pipelines with Temporary Containers?

使用临时容器编写范围管道

在 range-v3 中,当使用使用返回向量,有必要创建一个管道,将该函数映射到该范围的所有元素,并将所有结果向量展平到一个范围及其所有元素

最初,人们可能会尝试编写一个管道,例如:

<code class="cpp">auto rng = src | view::transform(f) | view::join;</code>

但是,这种方法以前是不可行的,因为不可能创建像这样的临时容器的视图由 f.

制作,为了解决这个问题,引入了一个补丁,现在允许正确写入此类范围管道。关键是将views::cache1运算符添加到管道中,如下例所示:

<code class="cpp">auto rng = views::iota(0, 4)
        | views::transform([](int i) { return std::string(i, char('a' + i)); })
        | views::cache1
        | views::join('-');</code>

这确保管道正确处理临时容器,允许我们编写使用范围管道有效地临时容器。

对于问题中描述的问题,解决方案是修改管道如下:

<code class="cpp">auto rng = src | views::transform(f) | views::cache1 | views::join;</code>

以上是如何将范围管道与临时容器一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn