C ++ Vektor akkumuliert

8

Ich habe versucht, die Akkumulationsfunktion für Vektoren zu verwenden

%Vor%

aber ich habe immer B = 0, während A nicht-Null-Werte

hatte     
Josh 22.11.2011, 13:29
quelle

2 Antworten

23

std::accumulate ist ein wenig hinterhältig in dem Sinne, dass der Typ des Ergebnisses der Typ des Anfangswerts und nicht der Typ der Containerelemente ist! So erzeugt Ihr Akku int s.

Um dies zu beheben, akkumulieren Sie in double :

%Vor%     
Kerrek SB 22.11.2011, 13:39
quelle
2

der Schlüssel könnte sein, wie Sie es tun [...] // Füllen Sie Werte in A "     Vektor A     Doppel B = 0;

%Vor%

löst B = 3.0

auf

wenn nach der Reserve ein [0] = 1 ist Das ist ein schlechter Code. was Sie stattdessen tun möchten, ist sagen Größe ändern.

reserve gibt Ihnen nur die Backing-Speicherkapazität, es erzeugt nicht die gültigen Iteratoren .. also ist A.begin () immer noch A.end ()

Wenn Sie sich die Codeänderung ansehen, kennen Sie den Unterschied zwischen Integer- und Doppelmathematik? sind Term1 und Term2 Integral?

    
Dan 22.11.2011 13:35
quelle

Tags und Links