gpt4 book ai didi

c++ - vector 的高效组合最小值和平均值计算

转载 作者:太空狗 更新时间:2023-10-29 23:34:54 32 4
gpt4 key购买 nike

我需要 vector 中值的最小值和平均值。

我用以下方法分别计算它们:

template <class T>
T Minimum(std::vector<T> & v){ return *min_element(begin(v), end(v)); }

template <class T>
T Mean(std::vector<T> & v)
{
T sum = std::accumulate(v.begin(), v.end(), static_cast<T>(0));
T mean = sum / v.size();
return mean;
}

这两个都要扫 vector 。

是否有一种标准的有效方法来计算只扫描一次的 vector 的最小值和平均值?

最佳答案

是的,您可以在同一调用中累加最小值和总和。不,它可能不会更有效,也不会更不有效。

template <typename T>
std::pair<T, T> MeanAndMin(const std::vector<T> & v)
{
auto zero = std::make_pair(static_cast<T>(0), std::numeric_limits<T>::max());
auto plus = [](auto pair, auto elem) { return std::make_pair(pair.first + elem, std::min(pair.second, elem)); };
auto res = std::accumulate(begin(v), end(v), zero, plus);
res.first /= v.size();
return res;
}

关于c++ - vector 的高效组合最小值和平均值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630188/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com