I have the following piece of code:

for (int idx : partOrderOptimizer.polyOrder)
{
    SliceLayerPart* part = &layer->parts[idx];
    ...
}

How would I go about transforming this into a single range based for loop, alike:

for (SliceLayerPart* part = &layer->parts[idx] where int idx : partOrderOptimizer.polyOrder)
{
    ...
}
有帮助吗?

解决方案

Just use boost::transformed:

for (SliceLayerPart* part : partOrderOptimizer.polyOrder | boost::transformed([&](int idx) { return &layer->parts[idx]; }))
{
    ...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top