Wprowadzenie do Iteratora w C ++

Przechodzenie przez bardzo złożone dane przechowywane w różnych typach kontenerów, takich jak tablica, wektor itp., W najkrótszym czasie wykonania jest możliwe dzięki Iteratorowi w C ++, składowi Standardowej Biblioteki Szablonów (STL). Nie martw się, jest to tylko wskaźnik podobny do obiektu, ale jest sprytny, ponieważ nie ma znaczenia, jakiego kontenera używasz, uniezależni Twój algorytm od typu kontenera, zapewniając wspólny interfejs dla wszystkich typów kontenerów, jak most pomiędzy algorytm i kontener. Iterator nie tylko zmniejsza złożoność programu, ale znacznie przyspiesza jego wykonanie.

Na przykład algorytm sort (), który ma dwa parametry, kończący i uruchamiający iterator, przeprowadzi sortowanie w kolejności, niezależnie od typu używanego kontenera. Iterator umożliwia zastosowanie ogólnych algorytmów do struktur danych. Struktury danych mogą wykorzystywać iterator do ujawnienia zakresu elementów.

Operacje przy użyciu iteratora

  • begin (): Ta funkcja zwróci iterator wskazujący na pierwszy element kontenera.
  • end (): Ta funkcja zwróci iterator wskazujący na ostatni element kontenera.
  • zaliczka (): Ta funkcja zwiększy pozycję iteratora do określonego argumentu.
  • next (): Ta funkcja zwróci nowy iterator, który zostanie wskazany przez iterator po zwiększeniu pozycji w argumentach.
  • previous (): Ta funkcja zwróci nowy iterator, który zostanie wskazany przez iterator po zmniejszeniu pozycji w argumentach.
  • inserter (): Ta funkcja wstawi element w dowolnym miejscu w kontenerze.

Praktyczne wdrożenie

1. Kod C ++ do implementacji Iteratora

Kod

#include
#include
#include
using namespace std;
int main()
(
//Declaring a Vector
std::vector v(1, 2, 3, 4, 5, 6, 7);
//Declaring Iterator
vector::iterator i;
//Function for iterating through vector elements
for(i=v.begin();i!=v.end();i++)
(
std::cout << *i <<" ";
)
return 0;
)

Wynik:

2. Kod C ++ pokazujący funkcjonalność iteratora

Kod

#include
#include
#include
using namespace std;
int main()
(
//Declaring a Vector
vector v(1, 2, 3, 4, 5, 6, 7, 8);
//Declaring Iterator
vector::iterator i;
//Function
v.insert(v.begin()+1, 10);
for(i=v.begin();i!=v.end();i++) (
cout << *i <<" ";
)
return 0;
)

Wynik:

Kategorie iteratora

Począwszy od C ++ 17 istnieje 5 różnych typów iteratorów, które można sklasyfikować w zależności od rodzaju funkcjonalności, jak pokazano na schemacie poniżej:

  • Input Iterator (stdin) : Z powodu ograniczonej funkcjonalności są one najsłabsze ze wszystkich iteratorów z funkcją tylko do odczytu i do przodu. Nie może modyfikować wartości kontenera. Operator dereferencji (*), operator nierówności (! =), Operator przyrostu (++) i operator równości (==) mogą być używane jako iteratory wejściowe. Także dla sekwencyjnych operacji wprowadzania.
  • Output Iterator (stdout): Iterator tylko do przechowywania iteratora tylko do zapisu, który służy do modyfikowania wartości kontenera. Mają także bardzo ograniczoną funkcjonalność. Iterator nie może uzyskać dostępu do elementu. Operator przypisania (=) i operator przyrostu (++) mogą być używane jako iteratory wyjściowe. Tylko w algorytmie jednoprzebiegowym.
  • Forter Iterator (pojedynczo połączona lista): Iterator zawiera funkcje Iteratorów wejściowych i wyjściowych. Może przesuwać się do przodu o jeden krok na raz. Do odczytu i zapisu w kontenerze jest to najbardziej preferowany iterator, który obsługuje ponowne użycie i zapisywanie. Obsługuje wszystkie powyższe operatory.
  • Dwukierunkowy iterator (lista podwójnie połączona): Jak sama nazwa sugeruje już dwukierunkowy, co czyni go silniejszym niż powyższe iteratory. Obsługuje również czytanie i pisanie do kontenera. Obsługuje operator dekrementacji (-).
  • Iterator losowego dostępu (tablice): Najsilniejszy iterator jest najsilniejszym iteratorem, ponieważ może odczytywać, pisać i uzyskiwać dostęp losowo. Funkcje podobne do wskaźnika, takie jak dodawanie i odejmowanie wskaźnika.

Zalety Iteratora w C ++

Jeśli musisz przejść z jednego elementu, który iterator obecnie wskazuje na inny element, który jest potencjalnie n kroków od bieżącego iteratora. Pierwsze cztery w hierarchii zajmie to liniowo, podczas gdy iterator o dostępie swobodnym może to zrobić w stałym czasie i jest to o wiele bardziej fascynujące, ponieważ tam oszczędza się czas. Jest to najważniejsza funkcja, którą zapewnia Iterator. Niektóre inne są wymienione poniżej

  • Wydajność kodu: jeśli mamy P rodzajów kontenerów danych i Q rzeczy, które chcemy z nimi zrobić, to skończymy pisać algorytmy P * Q. Jeśli dane są również R różnych typów, możemy skończyć z algorytmem P * Q * R. Korzystając z iteratorów, możemy to zrobić w algorytmie P + Q. Zaoszczędziliśmy 90% czasu i pracy. Przenoszenie wydajności kodu na wyższy poziom. Koncepcja wydajności polega na tym, że iterator wejściowy nad źródłem i iterator wyjściowy nad sekwencją docelową nie muszą być tego samego typu.
  • Przetwarzanie dynamiczne: Iteratory mają dynamiczne funkcje, takie jak zamiana w tym samym kontenerze, możliwość przypisania do kopiowania, inkrementacja, dereferencja i dekrementacja. Iterator zapewnia funkcję usuwania i dynamicznego dodawania elementów do kontenera. Ponieważ można zwiększać wszystkie iteratory, iteratory wejściowe można porównywać i odejmować od wartości. Iteratory dwukierunkowe mogą być zmniejszane. Głównym aspektem jest napisanie jednej funkcji i użycie jej dla dowolnego kontenera.

Wady Iteratora w C ++

  • Nie można jednocześnie przechodzić z jednej struktury danych do drugiej w skomplikowany sposób. W takim przypadku Iterator nie będzie działać.
  • Jeśli przetwarzasz listę i zapomniałeś czegoś, a teraz chcesz wrócić, nie możesz, ponieważ iteratory nie będą działać w ten sposób.
  • W przypadku, gdy musisz zaktualizować strukturę podczas ruchu, nie możesz tego zrobić, ponieważ iterator przechowuje swoją pozycję.

Wniosek

Podczas korzystania z iteratorów należy pamiętać o tych dwóch rzeczach, aby zapewnić efektywność kodu. Zawsze przekazuj iterator do funkcji zamiast kontenerów. Nigdy nie należy zwracać kontenerów zamiast zwracać lub przekazywać iterator. Możesz uzyskać dowolny element, używając iteratora, dereferencji i przekazując parę iteratora do algorytmu

Polecane artykuły

To jest przewodnik po Iteratorze w C ++. Tutaj omawiamy operacje w iteratorze, kategorie, zalety i wady z kodami i wyjściami. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-

  1. Tablice w C ++
  2. Co to jest C ++
  3. Funkcje tablicy C ++
  4. Pętle w C ++
  5. Funkcje tablic PHP | Rodzaje funkcji tablic w PHP