<iterator>
Definiuje wstępnie zdefiniowane iteratory i iteratory strumienia, iteratory pierwotne i szablony pomocnicze.
Wymagania
Nagłówek: <iterator>
Przestrzeń 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 Bezpieczne biblioteki: Standardowa biblioteka języka C++.
Elementy członkowskie
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::iterator o 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_iterator C++20 |
Określa iterator, który może odczytywać i zapisywać zarówno do przodu, jak i do tyłu. |
contiguous_iterator C++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_iterator C++20 |
Określa iterator, który może odczytywać (i ewentualnie zapisywać) wiele razy. |
input_iterator C++20 |
Określa iterator, który można odczytać z co najmniej raz. |
input_or_output_iterator C++20 |
Podstawa taksonomii koncepcji iteratora. |
output_iterator |
Określa iterator, do którego można napisać. |
random_access_iterator C++20 |
Określa iterator, który można odczytywać i zapisywać według indeksu. |
sentinel_for C++20 |
Określa sentinel dla typu iteratora. |
sized_sentinel_for C++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++