您可以使用新的范围库进行压缩吗?

时间:2019-02-15 20:55:58

标签: c++ c++20

请参阅:http://eel.is/c++draft/#ranges

给出两个相等长度的C ++ 2a范围(例如,符合范围库的范围概念的对象),有一种方法可以将它们压缩在一起,使得:

for (const auto& [a,b] : zip(a,b))

您期望什么?也就是说,它返回具有可破坏的绑定对的范围:

(a.begin(), b.begin())
(a.begin()+1, b.begin()+1)
(a.begin()+2, b.begin()+2)
...
(a.end()-1, b.end()-1)

2 个答案:

答案 0 :(得分:7)

如您所见,C ++ 20中目前没有zip_view(截至撰写本文时)。

它正在P1035R4中提出(连同少数其他适配器一起提出),其先前版本在圣地亚哥受到好评,并且似乎很有可能登陆C ++ 20 。关于代理引用存在一些开放性问题,但我认为这不是zip特有的。

答案 1 :(得分:0)

ranges v3 niebler已经公开了一个带有懒惰zip的库,还有一些更通用的表单zip_view等。作为仅标头库实现,因此您可以阅读代码。有一些很好的用法示例。 在c ++中,当询问时,zip可能会返回一个元组。并索引到该元组将为您提供值。