Podsumowanie elementów wektorowych w C ++

Podsumowanie elementów wektorowych w C ++
Oczywistym sposobem na podsumowanie elementów wektora jest dodanie ich jednego po drugim od pierwszego. W rzeczywistości nie ma innego sposobu, co ma przewagę nad tym, wszystko jest równe. I tak można użyć klasycznego na pętlę do podsumowania elementów wektora; Do podsumowania elementów wektora można wykorzystać oparte na zakresie zasięgu; Do podsumowania elementów wektora można użyć funkcji for_each () uwzględnionej z biblioteki algorytmu; Do podsumowania elementów wektora można użyć funkcji akumulatu ().

Z pierwszymi trzema wymienionymi powyżej, stwierdzenia muszą zostać napisane, aby faktycznie wykonać sumę. Za pomocą metody akumulacji funkcja akumulat () wykonuje sumowanie bez dodatkowych instrukcji sumowania. Te cztery metody są zilustrowane w tym artykule. Aby zakodować wektor w programie C ++, biblioteka wektorowa jest włączona do programu.

Treść artykułu

- Dodawanie elementów wektorowych za pomocą pętli

- Dodawanie elementów wektorowych za pomocą opartego na zakresie podatku

- Dodawanie elementów wektorowych za pomocą funkcji for_each ()

- Dodawanie elementów wektorowych za pomocą funkcji akumulat ()

- Wniosek

Dodawanie elementów wektorowych za pomocą pętli

Rozważ wektor:

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

Aby dodać wszystkie te elementy od samego początku, zmienna sumy, początkowo utrzymująca wartość zero, musi zostać zadeklarowana w następujący sposób:

Float sum = 0.0;

Od indeksu zero do ostatniego indeksu, każda wartość jest dodawana do sum. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorVtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Float sum = 0.0;
dla (int i = 0; isum += vtr [i];
Cout<< sum <powrót 0;

Wyjście to 16.5 Zgodnie z oczekiwaniami. Zauważ, że uwzględniono bibliotekę wektorową i użyto standardowej przestrzeni nazw.

Dodawanie elementów wektorowych za pomocą opartego na zakresie podatku

Rozważ następujący wektor liczb całkowitych:

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

Aby dodać wszystkie te elementy od samego początku, zmienna sumy, początkowo utrzymująca wartość zero, musi zostać zadeklarowana w następujący sposób:

int sum = 0;

Od pierwszego elementu wektora do ostatniego elementu, każda wartość jest dodawana do sum. Oparta na oparciu o zasięgu instrukcji jest podobna do powyższego instrukcji For-Compound. Jednak parametry opartej na pętli opartej na zasięgu różnią się od parametrów klasycznej formy (powyżej).

Istnieją dwa parametry w nawiasach opartych na pętli opartej na zakresie: pierwsza jest deklaracją zmienną, która odnosi się do następnego elementu w wektorze, zaczynając od pierwszego. Zastępuje VTR [i], klasycznego for-pętla powyżej. Drugi parametr to nazwa wektora. Składnia opartego na zasięgu instrukcji oparcia się

dla (instancja-init-opcja-opcja-declarację: for-range-initializer) instrukcja

Oparta na pętli oparta na zasięgu jest wariantem klasycznego za pętla; Wygodniej jest go używać w iteracji listy. Deklaracja zmienna jest przed okrężnicą, a nazwa wektora jest po okrężnicy. Poniższy program pokazuje oparte na oparciu o oświadczenie o skomponowaniu w akcji:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorVtr = 1, 2, 3, 4, 5;
int sum = 0;
dla (int var: vtr)
sum += var;
Cout<< sum <powrót 0;

Wyjście to 15. Uwaga: nazwa zmiennej, var, jest wyborem programisty. W tej pozycji odnosi się do następnego elementu (wartości) w wektorze.

Dodawanie elementów wektorowych za pomocą funkcji for_each ()

Funkcja for_each () znajduje się w bibliotece algorytmu. Składnia to:

szablon
funkcja constexpr for_each (inputiterator najpierw, inuputiterator last, funkcja f);

Pierwszym argumentem jest iterator, który wskazuje początek (pierwszy element) wektora. Drugim argumentem jest iterator, który wskazuje na koniec (tuż po ostatnim elemencie) tego samego wektora. Trzeci argument to tylko nazwa funkcji, która ma kod do wykonania sumowania. Ta funkcja jest obiektem funkcji.

Funkcja FOR_EACH () jest używana jako wywołanie funkcji, które wyśle ​​każdy element wektora, zaczynając od pierwszej do innej funkcji, F. Funkcja, F zrobi wszystko, co chce zrobić z elementem w jego ciele funkcyjnym. Każdy element wektora jest argumentem funkcji, F. Programator definiuje funkcję, F i może nadać mu nazwę inną niż f (). Parametr tej funkcji musi być typu każdego z elementów wektorowych (wszystkie elementy wektorowe są tego samego typu). Nazwa parametru jest wyborem programisty. Tak więc funkcja for_each () wywołuje funkcję, f () dla każdego elementu wektora.

Program do korzystania z funkcji for_each () powinien rozpocząć się w następujący sposób:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
wektor vtr = 1, 2, 3, 4, 5;
int sum = 0;

Uwzględniono biblioteki wektora i algorytmu. Zainicjowany wektor i zainicjowana suma zera są zadeklarowane. Dobra definicja funkcji sumowania dla F, która następuje w programie, może być:

void fn (int var)
sum += var;

Za każdym razem, gdy funkcja FN jest wywoływana przez funkcję FOR_EACH (), następna wartość wektora jest dodawana do sumy. Główna funkcja C ++ może być następująco:

int main ()

for_each (vtr.początek (), vtr.end (), fn);
Cout << sum << endl;
powrót 0;

Funkcja for_each () jest wywoływana raz z biblioteki algorytmu. Jego pierwszym argumentem jest iterator, który wskazuje na początek wektora; drugi argument wskazuje na koniec wektora; a trzeci argument to nazwa obiektu funkcyjnego, który jest wywoływany dla każdego elementu w wektorze. Po dokonaniu liczby połączeń, które odpowiadają liczbie elementów wektorowych, następna instrukcja w głównej funkcji, drukuje końcową sumę.

Dodawanie elementów wektorowych za pomocą funkcji akumulat ()

Składnia funkcji cumaluate () biblioteki numerycznej jest:

szablon
constexpr t akumulacja (inputiterator pierwszy, inputiterator last, t init);

Dzięki tej funkcji nie ma potrzeby zapisywania kodu (instrukcji) do sumowania. Funkcja akumulat () wykonuje sumowanie. Jego pierwszym argumentem jest iterator wskazujący na początek wektora. Jego drugim argumentem jest iterator, wskazujący na koniec wektora. Jego ostatnim argumentem jest początkowa wartość sumy. Powinno być zerowe dla wektora ints i 0.0 dla wektora pływaków (lub podwójnych). Funkcja zwraca sumę.

Wektor liczb całkowitych

Poniższy program podsumowuje wszystkie elementy wektora liczb całkowitych:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorVtr = 1, 2, 3, 4, 5;
int sum = akumuluje (VTR.początek (), vtr.end (), 0);
Cout<< sum <powrót 0;

Wyjście to 15; prawidłowy!

Wektor pływaków

Poniższy program podsumowuje wszystkie elementy wektora pływaków:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorVtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = akumuluje (VTR.początek (), vtr.end (), 0.0);
Cout<< sum <powrót 0;

Wyjście to 16.5; prawidłowy!

Problem z funkcją akumulacji

Jeśli trzeci argument funkcji akumulacji jest niewłaściwy typ, suma byłaby błędna. Na przykład, jeśli elementy są pływakami, a trzeci argument to 0 (liczba całkowita), suma zignorowałaby wszystkie części dziesiętne wartości, aby mieć sumę int. Poniższy program ilustruje to:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

vectorVtr = 1.1, 2.2, 3.3, 4.4, 5.5;
float sum = akumuluje (VTR.początek (), vtr.end (), 0);
Cout<< sum <powrót 0;

Wyjście to 15; zło!

Wniosek

Klasyczne na pętlę można wykorzystać do podsumowania elementów wektora. Do podsumowania elementów wektora można wykorzystać oparte na zakresie zasięgu. Do podsumowania elementów wektora można użyć funkcji FOR_EACH (). Do podsumowania elementów wektora można użyć funkcji akumulatu (). Po prostu uważaj na niepoprawne użycie trzeciego argumentu.