我有以下代码:
for (int idx : partOrderOptimizer.polyOrder)
{
SliceLayerPart* part = &layer->parts[idx];
...
}
我如何将其转换为基于循环的单一范围,类似:
for (SliceLayerPart* part = &layer->parts[idx] where int idx : partOrderOptimizer.polyOrder)
{
...
}
答案 0 :(得分:1)
只需使用boost::transformed
:
for (SliceLayerPart* part : partOrderOptimizer.polyOrder | boost::transformed([&](int idx) { return &layer->parts[idx]; }))
{
...
}