【问题标题】:Access index of current element in range-for loop c++20range-for循环c ++ 20中当前元素的访问索引
【发布时间】: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 中(甚至可能在此之前),我也会使用它而不是使用宏。如果您对此感兴趣,请重新提出问题。
  • 你链接的那个上面的answer怎么样(或accepted一个),还不够吗?
  • @TomHuntington 那么 Bob__ 链接到的 range-v3:answer 应该适合您。
  • @TomHuntington 我认为尝试使用尽可能多的标准库找到解决方案是合理的。我对std::ranges(和ranges-v3)的了解非常有限,但我现在尝试制作一个枚举器来取乐,模仿我如何理解视图在高层次上的工作方式。不过,我可能完全弄错了。 :) My try

标签: c++ c++20 std-ranges


【解决方案1】:

在考虑定义视图界面后,我决定使用 range-v3。

std::ranges https://stackoverflow.com/a/68172842/11998382 中缺少一些东西,在它们被添加到未来的标准之前,使用 range-v3 而不是自己反复尝试非平凡的实现是明智的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2016-03-24
    • 2021-05-23
    • 1970-01-01
    • 2016-02-12
    • 2020-04-14
    相关资源
    最近更新 更多