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

And*_*zos 5 c++ c++20

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

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

for (const auto& [a,b] : zip(a,b))
Run Code Online (Sandbox Code Playgroud)

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

(a.begin(), b.begin())
(a.begin()+1, b.begin()+1)
(a.begin()+2, b.begin()+2)
...
(a.end()-1, b.end()-1)
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 7

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

它是在P1035R4中提出的(连同少数其他适配器一起使用),以前的版本在圣地亚哥很受欢迎,而且似乎很有可能降落在C ++ 20中。关于代理参考存在一些开放性问题,但我认为这并非特定于zip

  • @AndrewTomazos你的意思是为什么它不适合(auto [xi,yi]:view :: zip(x,y))`?只是一个口味问题,两者是等效的。 (2认同)