Sdílet prostřednictvím


<iterator>

Definuje předdefinované iterátory a iterátory datových proudů, primitivy iterátoru a podpůrné šablony.

Požadavky

Záhlaví: <iterator>

Obor názvů: std

Poznámky

Iterátory jsou generalizace ukazatelů, které umožňují programu C++ pracovat s různými datovými strukturami jednotným způsobem. Namísto provozu na konkrétních datových typech pracují algoritmy s rozsahem hodnot určeným typem iterátoru. Algoritmy můžou pracovat s libovolnou datovou strukturou, která splňuje požadavky iterátoru.

V jazyce C++20 je šest kategorií iterátorů. Iterátory jsou uspořádány v hierarchii schopností. Jejich možnosti jsou určeny koncepty C++20. Popis různých iterátorů a jejich možností najdete v tématu Koncepty iterátoru.

Visual Studio přidalo rozšíření iterátorů standardní knihovny C++, které podporují ladění pro kontrolované a nezaškrtnuté iterátory. Další informace naleznete v tématu Bezpečné knihovny: Standardní knihovna jazyka C++.

Členové

Funkce

Název Popis
advance Zvýší iterátor o zadaný počet pozic.
back_inserter Vytvoří iterátor, který může vložit prvky do zadní části zadaného kontejneru.
begin Načte iterátor na první prvek v zadaném kontejneru.
cbegin Načte iterátor jen pro čtení do prvního prvku v zadaném kontejneru.
cend Načte iterátor jen pro čtení do elementu, který následuje za posledním prvkem v zadaném kontejneru.
crbegin Na začátek zadaného kontejneru získejte iterátor jen pro čtení.
crend Získejte sentinel na konci toho, co crbegin() se vrátí.
data Získejte ukazatel na první prvek v zadaném kontejneru.
distance Určuje počet kroků mezi polohami řešenými dvěma iterátory.
end Načte iterátor na prvek, který následuje po posledním prvku v zadaném kontejneru.
empty Otestujte, jestli je zadaný kontejner prázdný.
front_inserter Vytvoří iterátor, který může vložit prvky do přední části zadaného kontejneru.
inserter Adaptér iterátoru, který přidá nový prvek do kontejneru v určeném okamžiku vložení.
make_checked_array_iterator checked_array_iterator Vytvoří, kterou můžou používat jiné algoritmy. Poznámka: Tato funkce je rozšířením Standardní knihovny jazyka C++ od Microsoftu. Kód implementovaný pomocí této funkce není přenositelný do prostředí sestavení C++ Standard, která toto rozšíření Microsoftu nepodporují.
make_move_iterator Vrátí iterátor přesunu obsahující zadaný iterátor jako svůj uložené základní iterátor.
make_unchecked_array_iterator Vytvoří, unchecked_array_iterator kterou můžou používat jiné algoritmy. Poznámka: Tato funkce je rozšířením Standardní knihovny jazyka C++ od Microsoftu. Kód implementovaný pomocí této funkce není přenositelný do prostředí sestavení C++ Standard, která toto rozšíření Microsoftu nepodporují.
next Iteruje zadaný počet iterací a vrátí novou pozici iterace.
prev Iteruje v opačném pořadí zadaný počet iterací a vrátí novou pozici iterace.
rbegin Získejte reverzní iterátor na začátek zadaného kontejneru.
rend Získejte reverzní iterátor do sentinelu na konci zadaného kontejneru.
size Získá počet prvků.

Operátory

Název Popis
operator!= Testuje, zda objekt iterátoru na levé straně operátoru není roven objektu iterátoru na pravé straně.
operator== Testuje, zda je objekt iterátoru na levé straně operátoru roven objektu iterátoru na pravé straně.
operator< Testuje, zda je objekt iterátoru na levé straně operátoru menší než objekt iterátoru na pravé straně.
operator<= Testuje, zda je objekt iterátoru na levé straně operátoru menší než nebo roven objektu iterátoru na pravé straně.
operator> Testuje, zda je objekt iterátoru na levé straně operátoru větší než objekt iterátoru na pravé straně.
operator>= Testuje, zda je objekt iterátoru na levé straně operátoru větší než nebo roven objektu iterátoru na pravé straně.
operator+ Přidá posun iterátoru a vrátí nové reverse_iterator adresování vloženého prvku na nové pozici posunu.
operator- Odečte jeden iterátor od druhého a vrátí rozdíl.

Třídy

Název Popis
back_insert_iterator Šablona třídy popisuje výstupní objekt iterátoru. Vloží prvky do kontejneru typu Container, ke kterému přistupuje prostřednictvím chráněného pointer objektu, který ukládá označovaný jako kontejner.
bidirectional_iterator_tag Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje obousměrný iterátor.
checked_array_iterator Třída, která umožňuje přístup k poli pomocí náhodného přístupu, kontrolovaného iterátoru. Poznámka: Tato třída je rozšířením microsoftu standardní knihovny C++. Kód implementovaný pomocí této funkce není přenositelný do prostředí sestavení C++ Standard, která toto rozšíření Microsoftu nepodporují.
forward_iterator_tag Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje předávací iterátor.
front_insert_iterator Šablona třídy popisuje výstupní objekt iterátoru. Vloží prvky do kontejneru typu Container, ke kterému přistupuje prostřednictvím chráněného pointer objektu, který ukládá označovaný jako kontejner.
input_iterator_tag Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje vstupní iterátor.
insert_iterator Šablona třídy popisuje výstupní objekt iterátoru. Vloží prvky do kontejneru typu Container, ke kterému přistupuje prostřednictvím chráněného pointer objektu, který ukládá označovaný jako kontejner. Ukládá také chráněný iterator objekt třídy Container::iterator, nazývané iter.
istream_iterator Šablona třídy popisuje vstupní objekt iterátoru. Extrahuje objekty třídy Ty ze vstupního datového proudu, ke kterému přistupuje prostřednictvím objektu, který ukládá, ukazatele typu na basic_istream<Elem, Tr>.
istreambuf_iterator Šablona třídy popisuje vstupní objekt iterátoru. Vloží prvky třídy Elem do vyrovnávací paměti výstupního datového proudu, ke které přistupuje prostřednictvím objektu, který ukládá, typu pointer do basic_streambuf<Elem, Tr>.
iterator Šablona třídy se používá jako základní typ pro všechny iterátory.
iterator_traits Třída pomocné šablony poskytující kritické typy, které jsou spojeny s různými typy iterátoru, aby na ně bylo možné odkazovat stejným způsobem.
move_iterator Objekt move_iterator ukládá iterátor náhodného přístupu typu RandomIterator. Chová se jako iterátor s náhodným přístupem, pokud není dereferencován. Výsledek operator* je implicitně přetypován tak, aby value_type&&: byl .rvalue reference
ostream_iterator Šablona třídy popisuje výstupní objekt iterátoru. Vloží objekty třídy Type do výstupního datového proudu, který přistupuje prostřednictvím objektu, který ukládá, typu pointer do basic_ostream<Elem, Tr>.
ostreambuf_iterator Šablona třídy popisuje výstupní objekt iterátoru. Vloží prvky třídy Elem do vyrovnávací paměti výstupního datového proudu, ke které přistupuje prostřednictvím objektu, který ukládá, ukazatele typu na basic_streambuf<Elem, Tr>.
output_iterator_tag Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje výstupní iterátor.
random_access_iterator_tag Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje iterátor náhodného přístupu.
reverse_iterator Šablona třídy popisuje objekt, který se chová jako iterátor s náhodným přístupem, pouze obráceně.
unchecked_array_iterator Třída, která umožňuje přístup k poli pomocí náhodného přístupu, nekontrolovaného iterátoru. Poznámka: Tato třída je rozšířením microsoftu standardní knihovny C++. Kód implementovaný pomocí této funkce není přenositelný do prostředí sestavení C++ Standard, která toto rozšíření Microsoftu nepodporují.

Koncepty

Následující koncepty jsou definovány v std oboru názvů. Vztahují se na iterátory a také souvisí s kategoriemi iterátoru pro rozsahy popsané v <ranges> konceptech.

Koncept iterátoru Popis
bidirectional_iteratorC++20 Určuje iterátor, který může číst a zapisovat dopředu i dozadu.
contiguous_iteratorC++20 Určuje iterátor, jehož prvky jsou sekvenční v paměti, stejné velikosti a lze k němu přistupovat pomocí aritmetické metody ukazatele.
forward_iteratorC++20 Určuje iterátor, který může číst (a případně zapisovat) vícekrát.
input_iteratorC++20 Určuje iterátor, ze kterého můžete alespoň jednou číst.
input_or_output_iteratorC++20 Základem taxonomie konceptu iterátoru.
output_iterator Určuje iterátor, do kterého můžete zapisovat.
random_access_iteratorC++20 Určuje iterátor, který můžete číst a zapisovat podle indexu.
sentinel_forC++20 Určuje sentinel pro typ iterátoru.
sized_sentinel_forC++20 Určuje, že iterátor a jeho sentinel je možné odečíst (pomocí -) zjistit jejich rozdíl v konstantním čase.

Viz také

Referenční informace k souborům hlaviček
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace