gpt4 book ai didi

c++ - 使用 std::ranges 摆脱嵌套的 for 循环

转载 作者:行者123 更新时间:2023-12-04 12:09:04 24 4
gpt4 key购买 nike

让我有一个代码:

for (auto& a : x.as)
{
for (auto& b : a.bs)
{
for (auto& c : b.cs)
{
for (auto& d : c.ds)
{
if (d.e == ..)
{
return ...
}
}
}
}
}
as, bs, cs, ds - 相应元素的 std::vector。
是否可以使用 std::ranges 将四个丑陋的循环转换为一个漂亮的单行表达式?

最佳答案

join transform 意见,你可能会这样做:

for (auto& e : x.as | std::views::transform(&A::bs) | std::views::join
| std::views::transform(&B::cs) | std::views::join
| std::views::transform(&C::ds) | std::views::join
| std::views::transform(&D::e))
{
// ...
}
Demo

关于c++ - 使用 std::ranges 摆脱嵌套的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68405531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com