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:
wektorWyjś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)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ćWyjście to:
A B C D EBiblioteka 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 + 1Dzię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ć:
wektorWyjście to:
A c eZapętlanie wstecz
Poniższy kod wykorzystuje pętlę do zapętlania wstecz, wektor znaków (znaki):
int main ()Wyjście to:
E d c b aPętla rozpoczyna się od najwyższego wskaźnika (4), który jest podany przez:
vtr.rozmiar ()-1W 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 - 1Z 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:
wektorWyjście to:
E C apominię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ćWyjście to:
A B C D EObserwuj, 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;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 + 1Plus-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ć:
wektorWyjście to:
A c epominię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 ()Wyjście to:
E d c b aUż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 + 1Z 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:
wektorWyjście to:
E C apominię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) instrukcjaTym 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ć:
wektorWyjście to:
A B C D EPętanie za pomocą funkcji for_each ()
Funkcja FOR_EACH () jest używana z dołączonej biblioteki algorytmu. Składnia to:
szablonPierwszym 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ćWyjście to:
A B C D EWniosek
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.