【发布时间】:2021-10-30 15:28:22
【问题描述】:
在一个 pre-c++20 问题Access index in range-for loop (answer) 中,提到了
2020 年注意事项:使用基于 lambda 的解决方案而不是宏诡计可能更明智。
有人可以为 c++20 发布基于 lambda 的解决方案吗? c++20还有其他新的解决方案吗?
编辑:我有一个主循环,它在向量的大小上是多态的。由于我必须经常阅读和修改这段代码,我认为我有理由想要最好的解决方案。如果我想有时在主循环而不是其他循环中使用views::reverse,会发生什么? (我实际上并不需要这个,并且在重构后解决了我的直接问题,但我仍然经常使用additional initializations 来访问我代码库的冷开发区域中的当前元素,值得寻找解决方案)
【问题讨论】:
-
只需使用一个好的旧的非基于范围的 for 循环。
-
"c++20 还有其他新的解决方案吗?" - 也许
std::ranges中有一些东西。否则,您可以创建自定义迭代器。不过,这对于 C++20 来说并没有什么特别之处。即使在 C++11 中(甚至可能在此之前),我也会使用它而不是使用宏。如果您对此感兴趣,请重新提出问题。 -
@TomHuntington 那么 Bob__ 链接到的 range-v3:answer 应该适合您。
-
@TomHuntington 我认为尝试使用尽可能多的标准库找到解决方案是合理的。我对
std::ranges(和ranges-v3)的了解非常有限,但我现在尝试制作一个枚举器来取乐,模仿我如何理解视图在高层次上的工作方式。不过,我可能完全弄错了。 :) My try
标签: c++ c++20 std-ranges