小编Jos*_* S.的帖子

std :: accumulate没有按预期行事

我使用std :: accumulate和测试代码得到了意想不到的结果.我试图添加一个大的双向量,但由于某种原因,值溢出:

#include <iostream>
#include <vector>
#include <functional>
#include <numeric>

using namespace std;

double sum(double x, double y)
{
    // slows things down but shows the problem:
    //cout << x << " + " << y << endl;
    return (x+y);
}

double mean(const vector<double> & vec)
{
    double result = 0.0;

    // works:
    //vector<double>::const_iterator it;
    //for (it = vec.begin(); it != vec.end(); ++it){
    //      result += (*it);
    //}

    // broken:
    result = accumulate(vec.begin(), vec.end(), 0, sum);

    result /= vec.size(); …
Run Code Online (Sandbox Code Playgroud)

c++ stl

1
推荐指数
1
解决办法
276
查看次数

标签 统计

c++ ×1

stl ×1