double numbers[ ] = { 1, 0.5 ,0.333333 ,0.25 ,0.2, 0.166667, 0.142857, 0.125,
0.111111, 0.1 } ;
std::vector<double> doublenumbers (numbers , numbers + 10) ;
std::cout << std::accumulate (doublenumbers.begin() , doublenumbers.end() , 0) ;
Dies erzeugt 1, die offensichtlich falsch ist. Irgendwelche Erklärungen?C++ Std :: Accumulate gibt nicht die erwartete Summe
+1, ist dies ein wichtiger Gotcha, die mich mehrmals gebissen. –
auch, der Vektor ist nicht notwendig; Sie können Zeiger als Iteratoren verwenden: 'std :: accumulate (Zahlen, Zahlen + Größe der Zahlen/Größe der * Zahlen, 0.0);'. [In echtem Code würden Sie wahrscheinlich eine Konstante oder Variable 'num_numbers' anstelle von' sizeof numbers/sizeof * numbers' haben. –
Sehen Sie meine Antwort für eine einfache Möglichkeit, diese Kopfschmerzen in der Zukunft zu verhindern. –