Zapętlanie przez wektor w C ++

Zapętlanie przez wektor w C ++
Zapętlenie przez wektor oznacza dostęp do wszystkich elementów wektora od początku do końca lub od końca do początku. Do czytania lub pisania (wartość zmieniająca się) lub obu elementów.

W C ++ wektor można zapętlony za pomocą klasycznego forwarki z indeksem (indeks) w nawiasach kwadratowych. Można go zapętlić za pomocą opartego na zakresie podatku. Można go zapętlić za pomocą funkcji FOR_EACH () zawartej z biblioteki algorytmu.

Treść artykułu

- Zapętlanie za pomocą klasycznej formy

- Pętl

- Pętanie za pomocą funkcji for_each ()

- Wniosek

Zapętlanie za pomocą klasycznej formy

Indeks

Rozważ następujący segment kodu:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
char ch = vtr [2];
Cout << ch << endl;

Wyjście to „C”. W drugim stwierdzeniu, po nazwie wektorowej, VTR, znajdują się kwadratowe nawiasy. Wewnątrz nawiasów kwadratowych znajduje się indeks, który jest również indeksem wektorowym. Liczenie indeksu zaczyna się od zera. Indeks w kodzie wynosi 2, który zwraca trzeci element wektora.

Zapętlanie z indeksem dolnym

Aby zapętlić się z indeksem dolnym lub iteratorem, należy użyć pętli. Można również użyć pętli w pobycie lub do podczas gdy na pętlę jest najwygodniejsza. Składnia pętli to:

for (początek_state; while_condition; następny/poprzedni)
//sprawozdania

Zapętlanie naprzód

Poniższy program wykorzystuje pętlę do pętli do przodu, wektor znaków (zwarty), według indeksu indeksowego:

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

wektor vtr = „a”, „b”, „c”, „d”, „e”;
dla (int i = 0; ichar ch = vtr [i];
Cout << ch << ";

Cout << endl;
powrót 0;

Wyjście to:

A B C D E

Biblioteka wektorowa musi zostać uwzględniona, aby użyć klasy wektorowej. W głównej funkcji C ++, po utworzeniu wektora, jest pętla. Tę pętlą można podsumować w następujący sposób: Przeczytaj każdy element wektora zaczynający się od indeksu, 0; i chociaż koniec wektora nie został jeszcze osiągnięty, zwiększ indeks o 1, aby odczytać następny element.

Nawiasy na pętlę mają logikę tego, co czytać dalej, podczas gdy blok pętli odczytuje i drukowanie na terminalu (konsola).

Zapętlanie do przodu i pomijanie

W powyższej pętli następnym stwierdzeniem w nawiasach to ja++. To jest to samo, co:

i = i + 1

Dzięki temu elementy są czytane jeden po drugim w kierunku do przodu. Aby odczytać każdy inny element (za każdym razem pomijając jeden element), musi być następny argument w nawiasach

i = i + 2; który jest taki sam jak i+= 2;

Poniższy kod odczytuje każdą inną postać:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
dla (int i = 0; ichar ch = vtr [i];
Cout << ch << ";

Cout << endl;

Wyjście to:

A c e
pominięcie „B” i „D”.

Zapętlanie wstecz

Poniższy kod wykorzystuje pętlę do zapętlania wstecz, wektor znaków (znaki):

int main ()

wektor vtr = „a”, „b”, „c”, „d”, „e”;
for (int i = vtr.rozmiar ()-1; Ichar ch = vtr [i];
Cout << ch << ";

Cout << endl;
powrót 0;

Wyjście to:

E d c b a

Pętla rozpoczyna się od najwyższego wskaźnika (4), który jest podany przez:

vtr.rozmiar ()-1

W takim przypadku funkcja elementu wektorowego, rozmiar () zwraca 5. 1 musi zostać odjęte od niego, aby uzyskać najwyższy wskaźnik 4 (zliczanie indeksu rozpoczyna się od 0). Aby zapętlić się wstecz, poprzednie stwierdzenie w nawiasach jest teraz „i-”.

Zapętlanie wstecz i pomijanie

W powyższej pętli poprzednie stwierdzenie to ja-. To jest to samo, co:

i = i - 1

Z tym elementy są czytane jeden po drugim w odwrotnym kierunku. Aby odczytać każdy inny element (za każdym razem pomijając jeden element), poprzednie stwierdzenie musi być

i = i - 2; który jest taki sam jak i- = 2;

Poniższy kod odczytuje każdą inną postać, wstecz:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
for (int i = vtr.rozmiar ()-1; Ichar ch = vtr [i];
Cout << ch << ";

Cout << endl;

Wyjście to:

E C a

pominięcie „D” i „B”.

Zapętlanie za pomocą klasy iteratora

Wektor może być zapętlony za pomocą iteratora. Istnieje sześć klas iteratorów wektorowych. Tutaj używane są tylko dwa. Nazwy tych dwóch to: iterator i reverse_iterator. Na ilustracjach tutaj pętla jest nadal używana jako pętla.

Iterator jest opracowanym wskaźnikiem. Dla każdego iteratora istnieje klasa, z której można utworzyć obiekty. Obiekt utworzony jest iterator.

Zapętlanie naprzód

Poniższy program wykorzystuje pętlę do pętli do przodu, wektor znaków (zwarty), przez iterator:

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

wektor vtr = „a”, „b”, „c”, „d”, „e”;
wektor:: iterator iter = vtr.zaczynać();
for (iter = iter; iterchar ch = *iTer;
Cout << ch << ";

Cout << endl;
powrót 0;

Wyjście to:

A B C D E

Obserwuj, jak obiekt iteratora, Itera została ogłoszona. Wektor ma funkcję członka początkowa (). Zwraca to iterator, który wskazuje pierwszy element wektora. Istnieje inna funkcja członka, end () dla wektora. Zwraca iterator, który wskazuje tuż po ostatnim elemencie wektora. Iterator zwrócony przez koniec () jest bardzo kompatybilny z iteratorem zwróconym przez początek (). W rzeczywistości są tego samego typu, iterator.

W nawiasach stanem początkowym jest:

iTer = iTer;

Środki, że lewy operand, iter, powinien rozpocząć skanowanie od miejsca, w którym wskazuje prawy operand.

Ten za pętlę z iteratorami można podsumować w następujący sposób: Przeczytaj każdy element wektora zaczynający od tego itera; i chociaż koniec wektora nie został jeszcze osiągnięty, zwiększ iterator, itera, aby wskazać następny element, aby odczytać następny element.

Ciało na pętlę jest:

char ch = *iTer;
Cout << ch << ";

Gwiazdka w tej pozycji jest operatorem pośredniczym. Uzyskuje wartość wskazaną przez iterator

Zapętlanie do przodu i pomijanie iteratorem

W powyższej pętli następnym argumentem jest Iter++. To jest to samo, co:

iTer = iTer + 1

Plus-jeden z iteratorem oznacza wskazanie następnego elementu. Nie oznacza, dodaj całkowitą 1 do iteratora. Dzięki temu elementy są czytane jeden po drugim w kierunku do przodu. Aby odczytać każdy inny element (za każdym razem pomijając jeden element), musi być następny argument

iTer = iTer + 2; który jest taki sam jak ITER+= 2;

Poniższy kod odczytuje każdą inną postać:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
wektor:: iterator iter = vtr.zaczynać();
for (iter = iter; iterchar ch = *iTer;
Cout << ch << ";

Cout << endl;

Wyjście to:

A c e

pominięcie „B” i „D”.

Zapętlanie wstecz

Poniższy kod wykorzystuje pętlę do pętli wstecz, wektor znaków (zwarty), używając iteratorów:

int main ()

wektor vtr = „a”, „b”, „c”, „d”, „e”;
wektor:: reverse_iterator iter = vtr.rbegin ();
for (iter = iter; iterchar ch = *iTer;
Cout << ch << ";

Cout << endl;
powrót 0;

Wyjście to:

E d c b a

Użyto tutaj rewers_iterator. Wektor ma odpowiednią funkcję członka, rbegin (), która zwraca iterator, który wskazuje ostatni element wektora. Istnieje inna funkcja członka, Rend (), która zwraca iterator, który wskazuje tuż przed pierwszym elementem wektora.

Aby zapętlić się wstecz, poprzednie stwierdzenie w nawiasach jest nadal ironicznie „ITER ++”. I klimatyzacja, wciąż ironię, ma ironię<'.

Zapętlanie do tyłu i pomijanie

W powyższej pętli poprzednie stwierdzenie to: Iter++. To jest to samo co

iTer = iTer + 1

Z tym elementy są czytane jeden po drugim w odwrotnym kierunku. Aby odczytać każdy element zamówienia (za każdym razem pomijając jeden element), poprzednia instrukcja musi być

iTer = iTer + 2; który jest taki sam jak ITER+= 2;

Poniższy kod odczytuje każdą inną postać wstecz:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
wektor:: reverse_iterator iter = vtr.rbegin ();
for (iter = iter; iterchar ch = *iTer;
Cout << ch << ";

Cout << endl;

Wyjście to:

E C a

pominięcie „D” i „B”.

Pętl

Oparta na zakresie oparcia się na statucie jest bardziej wygodnym stwierdzeniem do zapętlenia za pośrednictwem listy, takiej jak wektor. Nie jest tak naprawdę używany do pomijania lub zapętlania wstecz. Składnia to:

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

Tym razem w nawiasach są dwa stwierdzenia, a nie trzy. Pierwszym stwierdzeniem jest deklaracja zmiennej, która zawiera następny element w wektorze. Ta zmienna musi być tego samego typu co rodzaj elementów wektorowych. Drugim argumentem po okrężnicy jest nazwa wektora.

Poniższy kod pokazuje, w jaki sposób można go użyć:

wektor vtr = „a”, „b”, „c”, „d”, „e”;
dla (char ch: vtr)
Cout << ch << ";

Cout << endl;

Wyjście to:

A B C D E

Pętanie za pomocą funkcji for_each ()

Funkcja FOR_EACH () jest używana z dołączonej biblioteki algorytmu. Składnia to:

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

Pierwszym argumentem jest iterator, który wskazuje pierwszy element wektora. Drugim argumentem jest iterator, który wskazuje tuż po ostatnim elemencie wektora. Trzecim argumentem jest nazwa funkcji, której ciało jest w klasycznym zabierzeniu. Ta funkcja ma jeden parametr i to deklaracja zmiennej utrzymywałaby następną wartość wektora. Musi być tego samego typu co każdy element w wektorze. Ta funkcja For_Each () nie jest tak naprawdę używana do pomijania lub zapętlania wstecz.

Poniższy program pokazuje, jak korzystać z wywołania funkcji FOR_EACH () oraz powiązanej definicji funkcji:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
void Func (char ch)
Cout << ch << ";

int main ()

wektor vtr = „a”, „b”, „c”, „d”, „e”;
for_each (vtr.początek (), vtr.end (), func);
Cout << endl;
powrót 0;

Wyjście to:

A B C D E

Wniosek

Zapętlanie przez wektor, oznacza dostęp do wszystkich elementów wektora, od początku do końca lub od końca do początku. Do czytania lub pisania (wartość zmieniająca się) lub obu elementów.

W C ++ wektor może być zapętlony za pomocą klasycznej formy, z indeksem dolnym (indeksem) w nawiasach kwadratowych; Można go zapętlić za pomocą opartego na zakresie opartym na kradzieży; Można go również zapętlić za pomocą funkcji FOR_EACH () zawartej z biblioteki algorytmu.