Sdílet prostřednictvím


<iterator>

Definuje základní iterátor, předdefinované iterátory a iterátory proudu, jakož i několik podpůrných šablon.Předdefinované iterátory zahrnují vkládací a reverzní adaptéry.Existují tři třídy adapterů iterátoru vložení: přední, zadní a obecný.Poskytují sémantiku vkládání, nikoliv sémantikou přepsání, kterou poskytují iterátory členské funkce kontejneru.

#include <iterator>

Poznámky

Iterátory jsou generalizacemi ukazatelů – abstrahují z jejich požadavků způsobem, který umožňuje programu C++ pracovat s různými datovými strukturami jednotným způsobem.Iterátory fungují jako prostředníci mezi kontejnery a obecnými algoritmy.Místo práce na konkrétních datových typech jsou algoritmy definovány, aby pracovaly na rozsahu určeném typem iterátoru.Datová struktura, která splňuje požadavky iterace, může pak být provozována algoritmem.Existuje pět typů nebo kategorií iterátoru, každý s vlastní sadou požadavků a výsledné funkčnosti:

  • Výstup: pohybující se vpřed může ukládat, ale ne načítat hodnoty poskytnuté ostream a inserter.

  • Vstup: pohybující se vpřed může načíst, ale ne ukládat hodnoty poskytnuté istream.

  • Předat dál: přesunutí vpřed, může ukládat a načítat hodnoty.

  • Obousměrné: přesun vpřed a zpět může ukládat a načítat hodnoty podle seznamu, sady, multisady, mapy a multimapy.

  • Náhodný přístup: přístup k prvkům v libovolném pořadí, může ukládat a načítat hodnoty, podle vektoru, deque, řetězce a pole.

Iterátory, které mají větší požadavky, a tedy silnější přístup k prvkům mohou být použity namísto iterátorů s menším počtem požadavků.Pokud je volán dopředný iterátor, může být místo toho použit iterátor náhodného přístupu.

Do sady Visual Studio byla přidána rozšíření iterátorů standardní knihovny C++ za účelem podpory pro řady situací v režimu ladění pro kontrolované a nekontrolované iterátory.Další informace naleznete v tématu Bezpečné knihovny: standardní knihovna C++.

Funkce

upřesnit

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 konstantní iterátor na první prvek v zadaném kontejneru.

cend

Načte konstantní iterátor na prvek, který následuje po posledním prvku v zadaném kontejneru.

vzdálenost

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.

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

Vytvoří checked_array_iterator, který mohou používat ostatní algoritmy.

[!POZNÁMKA]

Tato funkce je rozšířením společnosti Microsoft pro standardní knihovnu jazyka C++.Kód implementovaný pomocí této funkce není přenosný do standardního prostředí pro sestavování v jazyce C++, která toto rozšíření společnosti Microsoft 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, který mohou používat ostatní algoritmy.

[!POZNÁMKA]

Tato funkce je rozšířením společnosti Microsoft pro standardní knihovnu jazyka C++.Kód implementovaný pomocí této funkce není přenosný do standardního prostředí pro sestavování v jazyce C++, která toto rozšíření společnosti Microsoft nepodporují.

další

Iteruje zadaný počet iterací a vrátí novou pozici iterace.

předchozí

Iteruje v opačném pořadí zadaný počet iterací a vrátí novou pozici iterace.

Operátory

operator!=

Testuje, zda je 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 do iterátoru a vrátí nový reverse_iterator adresující vložený prvek na nové pozici posunu.

operator-

Odečte jeden iterátor od druhého a vrátí rozdíl.

Třídy

back_insert_iterator

Třída šablony popisuje výstupní objekt iterátoru.Vloží prvky do kontejneru typu Container, ke kterému přistupuje přes chráněný objekt pointer, ve kterém je uložen volaný kontejner.

bidirectional_iterator_tag

Třída, která poskytuje návratový typ pro funkci iterator_category, 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 společnosti Microsoft pro standardní knihovnu jazyka C++.Kód implementovaný pomocí této funkce není přenosný do standardního prostředí pro sestavování v jazyce C++, která toto rozšíření společnosti Microsoft nepodporují.

forward_iterator_tag

Třída, která poskytuje návratový typ pro funkci iterator_category, která představuje iterátor předání.

front_insert_iterator

Třída šablony popisuje výstupní objekt iterátoru.Vloží prvky do kontejneru typu Container, ke kterému přistupuje přes chráněný objekt pointer, ve kterém je uložen volaný kontejner.

input_iterator_tag

Třída, která poskytuje návratový typ pro funkci iterator_category, která představuje iterátor vstupu.

insert_iterator

Třída šablony popisuje výstupní objekt iterátoru.Vloží prvky do kontejneru typu Container, ke kterému přistupuje přes chráněný objekt pointer, ve kterém je uložen volaný kontejner.Také ukládá chráněný objekt iterator třídy Container::iterator nazvaný iter.

istream_iterator

Třída šablony 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á, typu ukazatele do basic_istream<Elem, Tr>.

istreambuf_iterator

Třída šablony popisuje vstupní objekt iterátoru.Vkládá prvky třídy Elem do výstupní mezipaměti datového proudu, ke kterému přistupuje prostřednictvím objektu, který ukládá, typu pointer do basic_streambuf<Elem, Tr>.

iterátor

Třída šablony slouží 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 na value_type&&:, aby vytvořil rvalue reference.

ostream_iterator

Třída šablony popisuje výstupní objekt iterátoru.Vkládá objekty třídy Type do výstupní mezipaměti datového proudu, ke kterému přistupuje prostřednictvím objektu, který ukládá, typu pointer do basic_ostream<Elem, Tr>.

Třída ostreambuf_iterator

Třída šablony popisuje výstupní objekt iterátoru.Vkládá prvky třídy Elem do výstupní mezipaměti datového proudu, ke kterému přistupuje prostřednictvím objektu, který ukládá, typu pointer do basic_streambuf<Elem, Tr>.

output_iterator_tag

Třída, která poskytuje návratový typ pro funkci iterator_category, která představuje iterátor výstupu.

random_access_iterator_tag

Třída, která poskytuje návratový typ pro funkci iterator_category, která představuje iterátor náhodného přístupu.

reverse_iterator

Třída šablony popisuje objekt, který se chová jako iterátor s náhodným přístupem, jen 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 společnosti Microsoft pro standardní knihovnu jazyka C++.Kód implementovaný pomocí této funkce není přenosný do standardního prostředí pro sestavování v jazyce C++, která toto rozšíření společnosti Microsoft nepodporují.

Viz také

Referenční dokumentace

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Další zdroje

Standardní knihovna C++ – hlavičkové soubory