Sommando elementi vettoriali in c ++

Sommando elementi vettoriali in c ++
Il modo ovvio per sommare gli elementi di un vettore è aggiungerli uno per uno a partire dal primo. In effetti, non c'è altro modo, il che ha un vantaggio su questo, tutto è uguale. E così il classico per loop può essere usato per riassumere gli elementi di un vettore; La per stato basata sulla gamma può essere utilizzata per riassumere gli elementi di un vettore; La funzione For_each () inclusa dalla libreria dell'algoritmo può essere utilizzata per riassumere gli elementi di un vettore; La funzione Accumulate () inclusa dalla libreria numerica può essere utilizzata per riassumere gli elementi di un vettore.

Con i primi tre metodi sopra menzionati, le dichiarazioni devono essere scritte per eseguire effettivamente la somma. Con il metodo Accumulate, la funzione Accumulate () fa la somma senza ulteriori dichiarazioni di somma. Questi quattro metodi sono illustrati in questo articolo. Al fine di codificare un vettore in un programma C ++, la libreria vettoriale è inclusa nel programma.

Contenuto dell'articolo

- Aggiunta di elementi vettoriali usando il per loop

- Aggiunta di elementi vettoriali utilizzando il per stato basato sulla gamma

- Aggiunta di elementi vettoriali usando la funzione for_each ()

- Aggiunta di elementi vettoriali utilizzando la funzione Accumulate ()

- Conclusione

Aggiunta di elementi vettoriali usando il per loop

Considera il vettore:

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

Al fine di aggiungere tutti questi elementi dall'inizio, una variabile di somma, inizialmente con il valore zero, deve essere dichiarata come segue:

Float Sum = 0.0;

Dall'indice zero all'ultimo indice, ogni valore viene aggiunto per somma in un ad anello. Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Float Sum = 0.0;
per (int i = 0; iSum += vtr [i];
cout<< sum <restituzione 0;

L'output è 16.5 come previsto. Si noti che è stata inclusa la libreria vettoriale e lo spazio dei nomi standard è stato utilizzato.

Aggiunta di elementi vettoriali utilizzando il per stato basato sulla gamma

Considera il seguente vettore di numeri interi:

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

Al fine di aggiungere tutti questi elementi dall'inizio, una variabile di somma, inizialmente con il valore zero, deve essere dichiarata come segue:

int sum = 0;

Dal primo elemento del vettore all'ultimo elemento, ogni valore viene aggiunto per somma nel per loop basato sull'intervallo. L'istruzione per compound basata su gamma è simile all'istruzione per il completamento sopra. Tuttavia, i parametri del per loop basato su portata sono diversi da quelli del classico per loop (sopra).

Esistono due parametri nelle parentesi del per loop basato su intervallo: la prima è una dichiarazione variabile che si riferisce all'elemento successivo nel vettore, a partire dal primo. Sostituisce vtr [i], del classico per loop sopra. Il secondo parametro è il nome del vettore. La sintassi dell'istruzione per il completamento basato su intervallo è

per (inizio-stato-essere-opzionale per la dichiarazione-declamazione: for-range-initializer)

Il per loop basato sulla gamma è una variante del classico per loop; È più conveniente da usare nell'iterazione tra gli elenchi. La dichiarazione variabile è davanti al colon e il nome del vettore è dopo il colon. Il seguente programma mostra la dichiarazione per compound basata su gamma in azione:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 1, 2, 3, 4, 5;
int sum = 0;
per (int var: VTR)
Sum += var;
cout<< sum <restituzione 0;

L'output è 15. Nota: il nome della variabile, var, è la scelta del programmatore. In quella posizione, si riferisce all'elemento successivo (valore) nel vettore.

Aggiunta di elementi vettoriali usando la funzione for_each ()

La funzione For_each () è nella libreria dell'algoritmo. La sintassi è:

modello
FUNZIONE CONSTEXPR For_EACH (inputIterator First, inputIterator Last, funzione f);

Il primo argomento è un iteratore che indica l'inizio (primo elemento) del vettore. Il secondo argomento è un iteratore che indica fino alla fine (subito dopo l'ultimo elemento) dello stesso vettore. Il terzo argomento è solo il nome della funzione che ha il codice per fare la somma. Questa funzione è un oggetto funzione.

La funzione For_each () viene utilizzata come chiamata di funzione, che invierà ogni elemento del vettore, a partire dal primo a un'altra funzione, f. La funzione, F farà tutto ciò che vuole fare con l'elemento nel suo corpo. Ogni elemento del vettore è un argomento per la funzione, f. Il programmatore definisce la funzione, f e può dargli il nome diverso da f (). Il parametro di questa funzione deve essere del tipo di ciascuno degli elementi vettoriali (tutti gli elementi vettoriali sono dello stesso tipo). Il nome del parametro è la scelta del programmatore. Quindi, la funzione For_each () chiama la funzione, f () per ciascun elemento vettoriale.

Il programma per utilizzare la funzione For_each () dovrebbe iniziare come segue:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
vettore vtr = 1, 2, 3, 4, 5;
int sum = 0;

Le librerie vettoriali e algoritmo sono incluse. Vengono dichiarati il ​​vettore inizializzato e la somma inizializzata di zero. Una buona definizione di funzione di somma per F, che segue nel programma, può essere:

void fn (int var)
Sum += var;

Ogni volta che la funzione, FN viene chiamata dalla funzione For_each (), il valore successivo del vettore viene aggiunto alla somma. La funzione principale C ++ può essere la seguente:

int main ()

for_each (vtr.inizio (), vtr.end (), fn);
cout << sum << endl;
restituzione 0;

La funzione For_each () è chiamata una volta dalla libreria dell'algoritmo. Il suo primo argomento è un iteratore che indica l'inizio del vettore; Il secondo argomento indica la fine del vettore; e il terzo argomento è il nome dell'oggetto funzione, che viene chiamato per ciascun elemento nel vettore. Dopo che il numero di chiamate, che corrispondono al numero di elementi vettoriali, sono stati fatti, l'istruzione successiva nella funzione principale, stampa la somma finale.

Aggiunta di elementi vettoriali utilizzando la funzione Accumulate ()

La sintassi della funzione Accumulate () della libreria numerica, è:

modello
accumulare costexpr t (inputterator prima, inputterator Last, t init);

Con questa funzione, non è necessario che il programmatore scriva il codice (istruzioni) per la somma. La funzione accumulata () fa la somma. Il suo primo argomento è un iteratore che punta all'inizio del vettore. Il suo secondo argomento è un iteratore, che indica la fine del vettore. Il suo ultimo argomento è il valore della somma iniziale. Dovrebbe essere zero per un vettore di int e 0.0 per un vettore di galleggianti (o doppi). La funzione restituisce la somma.

Vettore degli interi

Il seguente programma riassume tutti gli elementi di un vettore di numeri interi:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 1, 2, 3, 4, 5;
int Sum = Accumulate (VTR.inizio (), vtr.end (), 0);
cout<< sum <restituzione 0;

L'output è 15; corretto!

Vettore di galleggianti

Il seguente programma riassume tutti gli elementi di un vettore di galleggianti:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Float Sum = Accumulate (VTR.inizio (), vtr.end (), 0.0);
cout<< sum <restituzione 0;

L'output è 16.5; corretto!

Problema con la funzione Accumulate

Se il terzo argomento della funzione di accumulo è il tipo sbagliato, la somma sarebbe sbagliata. Ad esempio, se gli elementi sono galleggianti e il terzo argomento è 0 (intero), la somma ignorerebbe tutte le parti decimali dei valori per avere una somma int. Il seguente programma illustra questo:

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Float Sum = Accumulate (VTR.inizio (), vtr.end (), 0);
cout<< sum <restituzione 0;

L'output è 15; sbagliato!

Conclusione

Il classico per loop può essere usato per riassumere gli elementi di un vettore. La per stato basata sulla gamma può essere utilizzata per riassumere gli elementi di un vettore. La funzione For_each () inclusa dalla libreria dell'algoritmo può essere utilizzata per riassumere gli elementi di un vettore. La funzione Accumulate () inclusa dalla libreria numerica può essere utilizzata per riassumere gli elementi di un vettore. Fai attenzione all'uso errato del suo terzo argomento.