基于循环变换的范围

时间:2014-04-04 12:49:30

标签: c++11 foreach c++14

我有以下代码:

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

我如何将其转换为基于循环的单一范围,类似:

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

1 个答案:

答案 0 :(得分:1)

只需使用boost::transformed

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