まだ非常に高速に実行される古い C コードがいくつかあります。それが行うことの1つは、条件が保持される配列の一部を保存することです(「マスクされた」コピー)
したがって、Cコードは次のとおりです。
int *msk;
int msk_size;
double *ori;
double out[msk_size];
...
for ( int i=0; i<msk_size; i++ )
out[i] = ori[msk[i]];
このコードを「近代化」していたとき、インデックス カウンターを使用する必要のない反復子を使用して、C++11 でこれを行う方法があると考えました。std::for_each
しかし、またはでこれを行うより短い方法はないようですstd::copy
。これを C++11 でもっと簡潔に書く方法はありますか? それとも、探すのをやめて古いコードを残しておくべきですか?