<iterator>
Definiuje iteratory pierwotne, iteratory wstępnie zdefiniowane i iteratory strumienia, a także kilka szablonów pomocniczych.Wstępnie zdefiniowane iteratory obejmują adaptery wstawiania i odwracania.Istnieją trzy klasy adapterów iteratorów wstawiania: na przód, na tył i ogólne.Zapewniają one semantykę wstawiania zamiast semantyki zastępowania, którą dostarczają iteratory elementów członkowskich.
#include <iterator>
Uwagi
Iteratory są uogólnieniem wskaźników, abstrahując od ich wymagań w sposób, który pozwala programowi C++ na pracę z różnymi strukturami danych w jednolity sposób.Iteratory pełnią rolę pośredników pomiędzy kontenerami i algorytmami ogólnymi.Zamiast pracy na poszczególnych typach danych, algorytmy są zdefiniowane do pracy w zakresie określonym przez typ iteratora.Każda struktura danych, która spełnia wymagania iteratora, może być eksploatowana przez algorytm.Istnieje pięć typów lub kategorii iteratora, z których każda ma własne wymagania i funkcje wynikowe:
Wyjście: przenoszenie do przodu, może przechowywać wartości, ale nie je pobierać, dostarczone przez ostream i inserter.
Wejście: przenoszenie do przodu, może pobierać wartości, ale nie je przechowywać, dostarczone przez istream.
Do przodu: przenoszenie do przodu może przechowywać i pobierać wartości.
Dwukierunkowe: przenoszenie do przodu i do tyłu, może przechowywać i pobierać wartości dostarczone przez listy, zestawy, zestawy wielokrotne, mapy i mapy wielokrotne.
Dostęp swobodny: elementy dostępne w dowolnej kolejności, może przechowywać i pobierać wartości, dostarczone przez vector, deque, string i array.
Iteratory, które mają większe wymagania i bardziej wydajny dostęp do elementów, mogą być używane zamiast iteratorów z mniejszymi wymaganiami.Na przykład, jeżeli iterator do przodu zostanie wywołany, wówczas można zamiast niego użyć iteratora swobodnego dostępu.
Visual Studio dodaje rozszerzenia do iteratorów standardowej biblioteki C++, w celu uwzględnienia różnych sytuacji trybu debugowania dla iteratorów sprawdzonych i niesprawdzonych.Aby uzyskać więcej informacji, zobacz Bezpieczne biblioteki: Standardowa biblioteka C++.
Funkcje
Inkrementuje iterator o określoną liczbę pozycji. |
|
Tworzy iterator, który może wstawiać elementy z tyłu określonego kontenera. |
|
Pobiera iterator do pierwszego elementu w określonym kontenerze. |
|
Pobiera stały iterator do pierwszego elementu w określonym kontenerze. |
|
Pobiera stały iterator do elementu, który następuje po ostatnim elemencie w określonym kontenerze. |
|
Określa liczbę przyrostów między położeniami, do których odnoszą się dwa iteratory. |
|
Pobiera iterator do elementu, który następuje po ostatnim elemencie w określonym kontenerze. |
|
Tworzy iterator, która może wstawiać elementy z przodu określonego kontenera. |
|
Adapter iteratora, który dodaje nowy element do kontenera w określonym punkcie wstawiania. |
|
Tworzy checked_array_iterator, którego mogą używać inne algorytmy.
|
|
Zwraca iterator przenoszenia, zawierający podany iterator taki, jak jego przechowywany iterator podstawowy. |
|
Tworzy unchecked_array_iterator, którego mogą używać inne algorytmy.
|
|
Dokonuje iteracji określoną liczbę razy i zwraca nową pozycję iteratora. |
|
Dokonuje iteracji odwrotnej określoną liczbę razy i zwraca nową pozycję iteratora. |
Operatory
Testuje, czy obiekt iteratora po lewej stronie operatora nie jest równy obiektowi iteratora po prawej stronie. |
|
Testuje, czy obiekt iteratora po lewej stronie operatora jest równy obiektowi iteratora po prawej stronie. |
|
Testuje, czy obiekt iteratora po lewej stronie operatora jest mniejszy niż obiekt iteratora po prawej stronie. |
|
Testuje, czy obiekt iteratora po lewej stronie operatora jest mniejszy niż lub równy obiektowi iteratora po prawej stronie. |
|
Testuje, czy obiekt iteratora po lewej stronie operatora jest większy niż obiekt iteratora po prawej stronie. |
|
Testuje, czy obiekt iteratora po lewej stronie operatora jest większy niż lub równy obiektowi iteratora po prawej stronie. |
|
Dodaje przesunięcie do iteratora i zwraca nowy reverse_iterator odnoszący się do wstawionego elementu w nowym położeniu przesunięcia. |
|
Odejmuje jeden iterator od innego i zwraca różnicę. |
Klasy
Klasa szablonu opisuje obiekt iteratora wyjściowego.Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego obiektu wskaźnika, który przechowuje, o nazwie kontener. |
|
Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator dwukierunkowy. |
|
Klasa, która uzyskuje dostęp do tablicy przy użyciu sprawdzonego iteratora dostępu swobodnego.
|
|
Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator do przodu. |
|
Klasa szablonu opisuje obiekt iteratora wyjściowego.Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego obiektu wskaźnika, który przechowuje, o nazwie kontener. |
|
Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator wejściowy. |
|
Klasa szablonu opisuje obiekt iteratora wyjściowego.Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego obiektu wskaźnika, który przechowuje, o nazwie kontener.Przechowuje też chroniony obiekt iterator klasy Container::iterator o nazwie iter. |
|
Klasa szablonu opisuje obiekt iteratora wejściowego.Wyodrębnia obiekty klasy Ty ze strumienia wejściowego, do którego uzyskuje dostęp przez obiekt, który przechowuje, typ wskaźnika do basic_istream<Elem, Tr>. |
|
Klasa szablonu opisuje obiekt iteratora wejściowego.Wstawia elementy klasy Elem do bufora strumienia wyjściowego, do którego uzyskuje dostęp przez obiekt, który przechowuje, typu wskaźnika do basic_streambuf<Elem, Tr>. |
|
Klasa szablonu jest używana jako typ podstawowy dla wszystkich iteratorów. |
|
Klasa pomocnika szablonu udostępnia typy krytyczne, które są skojarzone z innymi typami iteratora, tak że można się do nich odwoływać w taki sam sposób. |
|
Obiekt move_iterator przechowuje iterator dostępu swobodnego typu RandomIterator.Zachowuje się jak iterator dostępu swobodnego, z wyjątkiem przypadków wyłuskania.Wynik operator* jest niejawnie rzutowany na value_type&&:, aby utworzyć rvalue reference. |
|
Klasa szablonu opisuje obiekt iteratora wyjściowego.Wstawia obiekty klasy Typ do strumienia wyjściowego, do którego uzyskuje dostęp przez obiekt, który przechowuje, typu wskaźnika do basic_ostream<Elem, Tr>. |
|
Klasa szablonu opisuje obiekt iteratora wyjściowego.Wstawia elementy klasy Elem do bufora strumienia wyjściowego, do którego uzyskuje dostęp przez obiekt, który przechowuje, typu wskaźnika do basic_streambuf<Elem, Tr>. |
|
Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator wyjściowy. |
|
Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator dostępu swobodnego. |
|
Klasa szablonu opisuje obiekt, który zachowuje się jak iterator dostępu swobodnego, tylko w odwrotnej kolejności. |
|
Klasa, która uzyskuje dostęp do tablicy przy użyciu niesprawdzonego iteratora dostępu swobodnego.
|
Zobacz też
Informacje
Bezpieczeństwo wątku w standardowej bibliotece C++
Standardowa biblioteka szablonów