我有一个大量的标准库容器,如果我将它们加在一起,它们可能会导致溢出。让我们假设它是这个容器:
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
我想使用 std::accumulate 计算这个容器的平均值,但我不能将所有数字加在一起。我会用 来计算v[0]/v.size() + v[1]/v.size() + ...
。所以我设置:
auto lambda = ...;
std::cout << std::accumulate(v.begin(), v.end(), 0, lambda) << std::endl;
这是我到目前为止所尝试->
的,其中表示输出:
lambda = [&](int a, int b){return (a + b)/v.size();}; -> 1
lambda = [&](int a, int b){return a/v.size() + b/v.size();}; -> 1
lambda = [&](int a, int b){return a/v.size() + b;}; -> 10
我怎样才能产生正确的意思,这样输出会是5
?