<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_iterator C++20 |
Určuje iterátor, který může číst a zapisovat dopředu i dozadu. |
contiguous_iterator C++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_iterator C++20 |
Určuje iterátor, který může číst (a případně zapisovat) vícekrát. |
input_iterator C++20 |
Určuje iterátor, ze kterého můžete alespoň jednou číst. |
input_or_output_iterator C++20 |
Základem taxonomie konceptu iterátoru. |
output_iterator |
Určuje iterátor, do kterého můžete zapisovat. |
random_access_iterator C++20 |
Určuje iterátor, který můžete číst a zapisovat podle indexu. |
sentinel_for C++20 |
Určuje sentinel pro typ iterátoru. |
sized_sentinel_for C++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