Summieren von Vektorelementen in C ++

Summieren von Vektorelementen in C ++
Der offensichtliche Weg, die Elemente eines Vektors zusammenzufassen. In der Tat gibt es keinen anderen Weg, was einen Vorteil darüber hat, alles ist gleich. Und so kann der klassische For-Schleife verwendet werden, um die Elemente eines Vektors zusammenzufassen; Mit der auf sich gezogenen Forderung können die Elemente eines Vektors zusammengefasst werden. Die aus der Algorithmus -Bibliothek enthaltene Funktion für_each () kann verwendet werden, um die Elemente eines Vektors zusammenzufassen. Die in der numerische Bibliothek enthaltene Funktion scapulate () kann verwendet werden, um die Elemente eines Vektors zusammenzufassen.

Mit den ersten drei oben genannten Methoden müssen Aussagen geschrieben werden, um die Summierung tatsächlich durchzuführen. Mit der akkumulierten Methode führt die Funktion scapculate () die Summierung ohne zusätzliche Summierungsanweisungen durch. Diese vier Methoden sind in diesem Artikel veranschaulicht. Um einen Vektor in einem C ++ - Programm zu codieren, wird die Vektorbibliothek in das Programm einbezogen.

Artikelinhalt

- Hinzufügen von Vektorelementen mit dem For-Loop

- Hinzufügen von Vektorelementen mithilfe der rangebasierten Forterung

- Hinzufügen von Vektorelementen mit der Funktion for_each ()

- Hinzufügen von Vektorelementen mit der Funktion scapculate ()

- Abschluss

Hinzufügen von Vektorelementen mit dem For-Loop

Betrachten Sie den Vektor:

Vektor vtr = 1.1, 2.2, 3.3, 4.4, 5.5;

Um alle diese Elemente von Anfang an hinzuzufügen, muss eine Summenvariable, die zunächst den Wert von Null hält, wie folgt deklariert werden:

float sum = 0.0;

Vom Index Null zum letzten Index wird jeder Wert hinzugefügt, um in einem für die Schleife zu summe. Das folgende Programm zeigt dies:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = 0.0;
für (int i = 0; isum += vtr [i];
Cout<< sum <Rückkehr 0;

Die Ausgabe ist 16.5 Wie erwartet. Beachten Sie, dass die Vektorbibliothek enthalten war und der Standard -Namespace verwendet wurde.

Hinzufügen von Vektorelementen mithilfe der rangebasierten Forterung

Betrachten Sie den folgenden Vektor von Ganzzahlen:

Vektor vtr = 1, 2, 3, 4, 5;

Um alle diese Elemente von Anfang an hinzuzufügen, muss eine Summenvariable, die zunächst den Wert von Null hält, wie folgt deklariert werden:

int sum = 0;

Vom ersten Element des Vektors bis zum letzten Element wird jeder Wert hinzugefügt, um in der range basierten For-Schleife zu summieren. Die rangebasierte For-Compound-Anweisung ähnelt der obigen For-Compound-Anweisung. Die Parameter des rangebasierten For-Schleifens unterscheiden sich jedoch von den der klassischen For-Loop (oben).

Es gibt zwei Parameter in den Klammern des rangebasierten For-Schleifen. Es ersetzt VTR [i] des klassischen For-Schleife oben. Der zweite Parameter ist der Name des Vektors. Die Syntax der rangebasierten For-Compound-Anweisung ist

für (init-statement-optionale For-Range-Deklaration: For-Range-Initializer) Erklärung

Die rangebasierte For-Schleife ist eine Variante des klassischen FOR-Schleife. Es ist bequemer, die Iteration über Listen zu verwenden. Die Variablenerklärung ist vor dem Dickdarm, und der Name des Vektors ist hinter dem Dickdarm. Das folgende Programm zeigt die range basierende For-Compound-Anweisung in Aktion:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

vectorVtr = 1, 2, 3, 4, 5;
int sum = 0;
für (int var: vtr)
sum += var;
Cout<< sum <Rückkehr 0;

Die Ausgabe ist 15. Hinweis: Der Name der Variablen Var ist die Wahl des Programmierers. In dieser Position bezieht es sich auf das nächste Element (Wert) im Vektor.

Hinzufügen von Vektorelementen mit der Funktion for_each ()

Die Funktion for_each () befindet sich in der Algorithmus -Bibliothek. Die Syntax ist:

Vorlage
contexpr funktion für_each (InputIterator zuerst, InputIterator zuletzt, Funktion f);

Das erste Argument ist ein Iterator, der auf den Start (erstes Element) des Vektors verweist. Das zweite Argument ist ein Iterator, der auf das Ende (kurz nach dem letzten Element) desselben Vektors verweist. Das dritte Argument ist nur der Name der Funktion, die den Code hat, um die Summierung durchzuführen. Diese Funktion ist ein Funktionsobjekt.

Die Funktion for_each () wird als Funktionsaufruf verwendet, die jedes Element des Vektors sendet, beginnend von der ersten zu einer anderen Funktion, F. Die Funktion F wird alles tun, was es mit dem Element in seinem Funktionskörper tun möchte. Jedes Element des Vektors ist ein Argument für die Funktion, f. Der Programmierer definiert die Funktion F und kann ihm den Namen als f () geben. Der Parameter dieser Funktion muss vom Typ jeder der Vektorelemente sein (alle Vektorelemente sind vom gleichen Typ). Der Name des Parameters ist die Wahl des Programmierers. Die Funktion for_each () ruft also die Funktion f () für jedes Vektorelement auf.

Das Programm zur Verwendung der Funktion for_each () sollte wie folgt beginnen:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
Vektor vtr = 1, 2, 3, 4, 5;
int sum = 0;

Die Vektor- und Algorithmusbibliotheken sind enthalten. Der initialisierte Vektor und die initialisierte Summe von Null werden deklariert. Eine gute Summierungsfunktionsdefinition für F, die im Programm folgt, kann sein:

void fn (int var)
sum += var;

Jedes Mal, wenn die Funktion FN von der Funktion für die für die_each () aufgerufen wird, wird der nächste Wert des Vektors zur Summe hinzugefügt. Die C ++ - Hauptfunktion kann wie folgt sein:

int main ()

for_each (vtr.begin (), vtr.end (), fn);
Cout << sum << endl;
Rückkehr 0;

Die Funktion for_each () wird einmal aus der Algorithmus -Bibliothek aufgerufen. Sein erstes Argument ist ein Iterator, der auf den Beginn des Vektors hinweist. Zweites Argument zeigt auf das Ende des Vektors; und das dritte Argument ist der Name des Funktionsobjekts, das für jedes Element im Vektor auffordert wird. Nach der Anzahl der Anrufe, die der Anzahl der Vektorelemente entsprechen, druckt die nächste Anweisung in der Hauptfunktion die endgültige Summe aus.

Hinzufügen von Vektorelementen mit der Funktion scapculate ()

Die Syntax der salbum () -Funktion der numerischen Bibliothek lautet:

Vorlage
contexprp t sammeln (InputIterator zuerst, InputIterator letztes, t init);

Mit dieser Funktion ist der Programmierer nicht erforderlich, um Code (Anweisungen) zum Summieren zu schreiben. Die Funktion scirculate () führt die Summierung durch. Sein erstes Argument ist ein Iterator, der auf den Beginn des Vektors zeigt. Sein zweites Argument ist ein Iterator, der auf das Ende des Vektors hinweist. Sein letztes Argument ist der anfängliche Summenwert. Es sollte Null für einen Vektor von INTs und 0 sein.0 für einen Vektor von Floats (oder Doppel). Die Funktion gibt die Summe zurück.

Vektor der Ganzzahlen

Das folgende Programm fasst alle Elemente eines Vektors von ganzen Zahlen zusammen:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

vectorVtr = 1, 2, 3, 4, 5;
int sum = akkumulieren (vtr.begin (), vtr.End (), 0);
Cout<< sum <Rückkehr 0;

Die Ausgabe ist 15; richtig!

Vektor der Schwimmer

Das folgende Programm fasst alle Elemente eines Vektors von Floats zusammen:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = akkumulieren (vtr.begin (), vtr.End (), 0.0);
Cout<< sum <Rückkehr 0;

Die Ausgabe ist 16.5; richtig!

Problem mit der akkumulierten Funktion

Wenn das dritte Argument der Akkumulationsfunktion der falsche Typ ist, wäre die Summe falsch. Wenn beispielsweise die Elemente Schwimmer sind und das dritte Argument 0 (Ganzzahl) ist, würde die Sum. Das folgende Programm zeigt dies:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = akkumulieren (vtr.begin (), vtr.End (), 0);
Cout<< sum <Rückkehr 0;

Die Ausgabe ist 15; falsch!

Abschluss

Die klassische For-Schleife kann verwendet werden, um die Elemente eines Vektors zusammenzufassen. Mit dem Bereich basierender For-Statement können die Elemente eines Vektors zusammengefasst werden. Die aus der Algorithmus -Bibliothek enthaltene Funktion für_each () kann verwendet werden, um die Elemente eines Vektors zusammenzufassen. Die in der numerische Bibliothek enthaltene Funktion scapulate () kann verwendet werden, um die Elemente eines Vektors zusammenzufassen. Achten Sie einfach auf die falsche Verwendung seines dritten Arguments.