我希望从 C++ 中的浮点数组中计算中值:
float Median( FloatArray const * constFloatArray )
{
FloatArray scratch = FloatArray( *constFloatArray );
int64_t const size = scratch.GetWidth() * scratch.GetHeight();
int64_t const mid = size / 2;
std::nth_element( scratch.begin(), scratch.begin() + mid, scratch.end() );
return scratch[ mid ];
}
FloatArray 包含一个常规的 C++ 浮点数组。
我正在使用std::nth_element
,但想知道是否有这样的设施nth_element
可以处理const
数据?现在,我正在制作一个副本,然后nth_element
在扔掉之前做。如果没有类似nth_element
for const
data 的东西,是否有更有效的方法使用复制步骤来计算信息,从而避免潜在的额外 O(n) 循环?也许性能影响可以忽略不计?我的数组大小可能在 20 亿左右。