<iterator>

Definiuje wstępnie zdefiniowane iteratory i iteratory strumienia, iteratory pierwotne i szablony pomocnicze.

Wymagania

Nagłówka:<iterator>

Obszaru nazw:std

Uwagi

Iteratory to uogólnianie wskaźników, które umożliwiają programowi języka C++ pracę z różnymi strukturami danych w jednolity sposób. Zamiast działać na określonych typach danych, algorytmy działają na zakresie wartości określonych przez rodzaj iteratora. Algorytmy mogą działać na dowolnej strukturze danych, która spełnia wymagania iteratora.

W języku C++20 istnieją sześć kategorii iteratorów. Iteratory są rozmieszczane w hierarchii możliwości. Ich możliwości są określane przez koncepcje języka C++20. Opis różnych iteratorów i ich możliwości można znaleźć w temacie Iterator concepts (Pojęcia iteratora)

Program Visual Studio dodał rozszerzenia do iteratorów biblioteki standardowej języka C++ w celu obsługi debugowania dla zaznaczonych i niezaznaczonej iteratorów. Aby uzyskać więcej informacji, zobacz biblioteki Sejf: Standardowa biblioteka języka C++.

Członkowie

Funkcje

Nazwa/nazwisko opis
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 iterator tylko do odczytu do pierwszego elementu w określonym kontenerze.
cend Pobiera iterator tylko do odczytu do elementu, który jest zgodny z ostatnim elementem w określonym kontenerze.
crbegin Pobierz iterator tylko do odczytu odwrotnego na początku określonego kontenera.
crend Pobierz sentinel na końcu zwracanych crbegin() wartości.
data Pobierz wskaźnik do pierwszego elementu 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.
empty Przetestuj, czy określony kontener jest pusty.
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 obiekt checked_array_iterator , który może być używany przez inne algorytmy. Uwaga: Ta funkcja jest rozszerzeniem firmy Microsoft standardowej biblioteki C++. Kod implementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji języka C++, które nie obsługują tego rozszerzenia firmy Microsoft.
make_move_iterator Zwraca iterator przenoszenia, zawierający podany iterator taki, jak jego przechowywany iterator podstawowy.
make_unchecked_array_iterator Tworzy obiekt unchecked_array_iterator , który może być używany przez inne algorytmy. Uwaga: Ta funkcja jest rozszerzeniem firmy Microsoft standardowej biblioteki C++. Kod implementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji języka C++, które nie obsługują tego rozszerzenia firmy 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.
rbegin Pobierz iterator odwrotny na początek określonego kontenera.
rend Pobierz iterator odwrotny do sentinel na końcu określonego kontenera.
size Pobierz liczbę elementów.

Operatory

Nazwa/nazwisko opis
operator!= Sprawdza, 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 nowe reverse_iterator adresowanie wstawionego elementu w nowej pozycji przesunięcia.
operator- Odejmuje jeden iterator od innego i zwraca różnicę.

Klasy

Nazwa/nazwisko opis
back_insert_iterator Szablon klasy opisuje obiekt iteratora wyjściowego. Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego pointer obiektu, który przechowuje nazywany kontenerem.
bidirectional_iterator_tag Klasa udostępniająca typ zwracany dla iterator_category funkcji reprezentującej 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 firmy Microsoft standardowej biblioteki C++. Kod implementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji języka C++, które nie obsługują tego rozszerzenia firmy Microsoft.
forward_iterator_tag Klasa, która udostępnia typ zwracany dla iterator_category funkcji reprezentującej iterator przesyłania dalej.
front_insert_iterator Szablon klasy opisuje obiekt iteratora wyjściowego. Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego pointer obiektu, który przechowuje nazywany kontenerem.
input_iterator_tag Klasa, która udostępnia typ zwracany dla iterator_category funkcji reprezentującej iterator wejściowy.
insert_iterator Szablon klasy opisuje obiekt iteratora wyjściowego. Wstawia elementy do kontenera typu Container, do którego uzyskuje dostęp za pośrednictwem chronionego pointer obiektu, który przechowuje nazywany kontenerem. Przechowuje również chroniony iterator obiekt klasy Container::iteratoro nazwie iter.
istream_iterator Szablon klasy opisuje obiekt iteratora wejściowego. Wyodrębnia obiekty klasy Ty ze strumienia wejściowego, do którego uzyskuje dostęp za pośrednictwem obiektu, który przechowuje, wskaźnika typu na basic_istream<Elem, Tr>wartość .
istreambuf_iterator Szablon klasy opisuje obiekt iteratora wejściowego. Wstawia elementy klasy Elem do buforu strumienia wyjściowego, do którego uzyskuje dostęp za pośrednictwem obiektu, który przechowuje, typu pointer na basic_streambuf<Elem, Tr>wartość .
iterator Szablon klasy jest używany 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 losowego typu RandomIterator. Zachowuje się jak iterator dostępu swobodnego, z wyjątkiem przypadków wyłuskania. Wynik operator* funkcji jest niejawnie rzutowy w celu value_type&&: utworzenia elementu rvalue reference.
ostream_iterator Szablon klasy opisuje obiekt iteratora wyjściowego. Wstawia obiekty klasy Type do strumienia wyjściowego, do którego uzyskuje dostęp za pośrednictwem obiektu, który przechowuje, typu pointer .basic_ostream<Elem, Tr>
ostreambuf_iterator Szablon klasy opisuje obiekt iteratora wyjściowego. Wstawia elementy klasy Elem do buforu strumienia wyjściowego, do którego uzyskuje dostęp za pośrednictwem obiektu, który przechowuje, wskaźnika typu na basic_streambuf<Elem, Tr>.
output_iterator_tag Klasa, która udostępnia typ zwracany dla iterator_category funkcji, która reprezentuje iterator danych wyjściowych.
random_access_iterator_tag Klasa, która udostępnia typ zwracany dla iterator_category funkcji, która reprezentuje iterator dostępu losowego.
reverse_iterator Szablon klasy opisuje obiekt, który zachowuje się jak iterator dostępu losowego, tylko odwrotnie.
unchecked_array_iterator Klasa, która uzyskuje dostęp do tablicy przy użyciu niesprawdzonego iteratora dostępu swobodnego. Uwaga: ta klasa jest rozszerzeniem firmy Microsoft standardowej biblioteki C++. Kod implementowany przy użyciu tej funkcji nie jest przenośny do standardowych środowisk kompilacji języka C++, które nie obsługują tego rozszerzenia firmy Microsoft.

Pojęcia

Następujące pojęcia są zdefiniowane w std przestrzeni nazw. Mają zastosowanie do iteratorów i są również związane z kategoriami iteratora dla zakresów opisanych w <ranges> pojęciach.

Koncepcja iteratora opis
bidirectional_iteratorC++20 Określa iterator, który może odczytywać i zapisywać zarówno do przodu, jak i do tyłu.
contiguous_iteratorC++20 Określa iterator, którego elementy są sekwencyjne w pamięci, ten sam rozmiar i można uzyskać do niego dostęp przy użyciu arytmetyki wskaźnika.
forward_iteratorC++20 Określa iterator, który może odczytywać (i ewentualnie zapisywać) wiele razy.
input_iteratorC++20 Określa iterator, który można odczytać z co najmniej raz.
input_or_output_iteratorC++20 Podstawa taksonomii koncepcji iteratora.
output_iterator Określa iterator, do którego można napisać.
random_access_iteratorC++20 Określa iterator, który można odczytywać i zapisywać według indeksu.
sentinel_forC++20 Określa sentinel dla typu iteratora.
sized_sentinel_forC++20 Określa, że iterator i jego sentinel można odjąć (przy użyciu ) -w celu znalezienia różnicy w stałym czasie.

Zobacz też

Odwołanie do plików nagłówka
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++