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) ;
To daje 1, co jest ewidentnie błędne. Jakieś wyjaśnienia?C++ std :: accumulate nie daje oczekiwanej sumy
+1, jest to ważny haczyka, który jest ugryziony mnie kilka razy. –
również wektor nie jest konieczny; możesz używać wskaźników jako iteratorów: 'std :: accumulate (liczby, liczby + sizeof liczby/sizeof * liczby, 0.0);'. [W prawdziwym kodzie prawdopodobnie miałbyś stałą lub zmienną 'num_numbers' zamiast' sizeof numbers/sizeof * numbers'] –
Zapoznaj się z moją odpowiedzią, aby w łatwy sposób zapobiec temu bólowi głowy w przyszłości. –