Udostępnij za pośrednictwem


<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

advance

Inkrementuje iterator o określoną liczbę pozycji.

back_inserter

Tworzy iterator, który może wstawiać elementy z tyłu określonego kontenera.

begin

Pobiera iterator do pierwszego elementu w określonym kontenerze.

cbegin

Pobiera stały iterator do pierwszego elementu w określonym kontenerze.

cend

Pobiera stały iterator do elementu, który następuje po ostatnim elemencie w określonym kontenerze.

distance

Określa liczbę przyrostów między położeniami, do których odnoszą się dwa iteratory.

end

Pobiera iterator do elementu, który następuje po ostatnim elemencie w określonym kontenerze.

front_inserter

Tworzy iterator, która może wstawiać elementy z przodu określonego kontenera.

inserter

Adapter iteratora, który dodaje nowy element do kontenera w określonym punkcie wstawiania.

make_checked_array_iterator

Tworzy checked_array_iterator, którego mogą używać inne algorytmy.

[!UWAGA]

Ta funkcja jest rozszerzeniem Microsoft standardowej biblioteki języka C++.Kod zaimplementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji C++, które nie obsługują tego rozszerzenia Microsoft.

make_move_iterator

Zwraca iterator przenoszenia, zawierający podany iterator taki, jak jego przechowywany iterator podstawowy.

make_unchecked_array_iterator

Tworzy unchecked_array_iterator, którego mogą używać inne algorytmy.

[!UWAGA]

Ta funkcja jest rozszerzeniem Microsoft standardowej biblioteki języka C++.Kod zaimplementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji C++, które nie obsługują tego rozszerzenia Microsoft.

next

Dokonuje iteracji określoną liczbę razy i zwraca nową pozycję iteratora.

prev

Dokonuje iteracji odwrotnej określoną liczbę razy i zwraca nową pozycję iteratora.

Operatory

operator!=

Testuje, czy obiekt iteratora po lewej stronie operatora nie jest równy obiektowi iteratora po prawej stronie.

operator==

Testuje, czy obiekt iteratora po lewej stronie operatora jest równy obiektowi iteratora po prawej stronie.

operator<

Testuje, czy obiekt iteratora po lewej stronie operatora jest mniejszy niż obiekt iteratora po prawej stronie.

operator<=

Testuje, czy obiekt iteratora po lewej stronie operatora jest mniejszy niż lub równy obiektowi iteratora po prawej stronie.

operator>

Testuje, czy obiekt iteratora po lewej stronie operatora jest większy niż obiekt iteratora po prawej stronie.

operator>=

Testuje, czy obiekt iteratora po lewej stronie operatora jest większy niż lub równy obiektowi iteratora po prawej stronie.

operator+

Dodaje przesunięcie do iteratora i zwraca nowy reverse_iterator odnoszący się do wstawionego elementu w nowym położeniu przesunięcia.

operator-

Odejmuje jeden iterator od innego i zwraca różnicę.

Klasy

back_insert_iterator

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.

bidirectional_iterator_tag

Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator dwukierunkowy.

checked_array_iterator

Klasa, która uzyskuje dostęp do tablicy przy użyciu sprawdzonego iteratora dostępu swobodnego.

[!UWAGA]

Ta klasa jest rozszerzeniem Microsoft standardowej biblioteki C++.Kod zaimplementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji C++, które nie obsługują tego rozszerzenia Microsoft.

forward_iterator_tag

Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator do przodu.

front_insert_iterator

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.

input_iterator_tag

Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator wejściowy.

insert_iterator

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.

istream_iterator

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>.

istreambuf_iterator

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>.

iterator

Klasa szablonu jest używana jako typ podstawowy dla wszystkich iteratorów.

iterator_traits

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.

move_iterator

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.

ostream_iterator

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 ostreambuf_iterator

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>.

output_iterator_tag

Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator wyjściowy.

random_access_iterator_tag

Klasa udostępniająca typ zwracany dla funkcji iterator_category, która reprezentuje iterator dostępu swobodnego.

reverse_iterator

Klasa szablonu opisuje obiekt, który zachowuje się jak iterator dostępu swobodnego, tylko w odwrotnej kolejności.

unchecked_array_iterator

Klasa, która uzyskuje dostęp do tablicy przy użyciu niesprawdzonego iteratora dostępu swobodnego.

[!UWAGA]

Ta klasa jest rozszerzeniem Microsoft standardowej biblioteki C++.Kod zaimplementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji C++, które nie obsługują tego rozszerzenia Microsoft.

Zobacz też

Informacje

Bezpieczeństwo wątku w standardowej bibliotece C++

Standardowa biblioteka szablonów

Inne zasoby

Pliki nagłówkowe standardowej biblioteki języka C++