C++11 基于范围的for循环变换

C++11 基于范围的for循环变换,c++11,foreach,c++14,C++11,Foreach,C++14,我有以下代码: for (int idx : partOrderOptimizer.polyOrder) { SliceLayerPart* part = &layer->parts[idx]; ... } 我如何将其转换为基于单个范围的for循环,类似于: for (SliceLayerPart* part = &layer->parts[idx] where int idx : partOrderOptimizer.polyOrder) {

我有以下代码:

for (int idx : partOrderOptimizer.polyOrder)
{
    SliceLayerPart* part = &layer->parts[idx];
    ...
}
我如何将其转换为基于单个范围的for循环,类似于:

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

只需使用
boost::transformed

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

我认为这是不可能的。它如何改进代码?它不是SQL或LINQI对它是否可能是好奇的,而且如果它改进了代码,那么我猜这是在BeHeldRead的眼睛。也许你可以试试一些C++ LINQ库,其中一些使用运算符<代码> < /C>作为管道运算符来执行这种TaskI不是寻找一个库解决方案,只是一个巧妙的技巧,如果它存在的话。如果它没有,这没关系:这将涉及到C++中的一个库,而不是在<>代码STD。基本上是一个范围转换器:
boost
至少有一个基于迭代器的迭代器,可能还有一个范围转换器。语法的结尾应该类似于(auto x:transform(partOrderOptimizer.polyOrder,[&](int-idx){return&layer->parts[idx];}))或类似的东西。