我有一些运行速度非常快的旧 C 代码。它所做的一件事是存储条件成立的数组部分(“屏蔽”副本)
所以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
or 甚至std::copy
. 有没有办法在 C++11 中更简洁地写出来?还是我应该停止查找并保留旧代码?