假设我有一个包含N个元素的std::vector
。我想要将其中每第n个元素复制到一个新的向量中,或者对该元素进行平均然后复制它(下采样原始向量)。因此,我想要执行以下操作:
std::vector<double> vec(N);
long n = 4;
std::vector<double> ds(N/n);
for(long i = 0; i < ds.size(); i+=n)
{
ds[i] = vec[i*n];
}
或者
for(long i = 0; i < ds.size(); i+=n)
{
double tmp = 0;
for(long j = 0; j < n; j++)
{
tmp += vec[i*n+j];
}
ds[i] = tmp/static_cast<double>(n);
}
有没有一种使用C++标准算法的方法来实现这个功能?比如使用带有二进制函数的std::copy?我有数十亿个元素要这样处理,我希望这样做尽可能快。
PS:我不想使用外部库,比如boost。
std::copy
等。 - OMGtechy