Sdílet prostřednictvím


move_iterator – třída

Šablona move_iterator třídy je obálka pro iterátor. Move_iterator poskytuje stejné chování jako iterátor, který zabalí (obchody), s výjimkou toho, že změní operátor dereference uloženého iterátoru na odkaz rvalue a převede kopii na přesunutí. Další informace o hodnotách rvalue naleznete v tématu Referenční deklarátor Rvalue: &>.

Syntaxe

class move_iterator;

Poznámky

Šablona třídy popisuje objekt, který se chová jako iterátor s výjimkou případů, kdy se dereferenced. Ukládá iterátor náhodného přístupu typu Iterator, který je přístupný prostřednictvím členské funkce base(). Všechny operace na objektu a move_iterator jsou prováděny přímo na uloženém iterátoru s tím rozdílem, že výsledek operator* je implicitně přetypován tak, aby value_type&& odkaz na hodnotu rvalue.

Je move_iterator možné, že operace, které nejsou definované zabaleným iterátorem, můžou být schopné. Tyto operace by se neměly používat.

Konstruktory

Konstruktor Popis
move_iterator Konstruktor pro objekty typu move_iterator.

Typedefs

Název typu Popis
iterator_type Synonymum pro parametr RandomIteratoršablony .
iterator_category Synonymum delšího typename výrazu stejného názvu iterator_category identifikuje obecné schopnosti iterátoru.
value_type Synonymum delšího typename výrazu stejného názvu popisuje typ value_type prvků iterátoru.
difference_type Synonymum delšího typename výrazu stejného názvu difference_type popisuje celočíselný typ potřebný k vyjádření hodnot rozdílů mezi prvky.
ukazatel Synonymum pro parametr RandomIteratoršablony .
odkaz Synonymum pro rvalue odkaz value_type&&.

Členské funkce

Členová funkce Popis
base Členová funkce vrátí uložený iterátor zabalený tímto move_iterator.

Operátory

Operátor Popis
move_iterator::operator* Vrací objekt (reference)*base().
move_iterator::operator++ Zvýší uložený iterátor. Přesné chování závisí na tom, jestli se jedná o předvykrementační nebo postinkrementační operaci.
move_iterator::operator-- Sníží uložený iterátor. Přesné chování závisí na tom, jestli se jedná o předkrement nebo operaci následného zvýšení.
move_iterator::operator-> Vrací objekt &**this.
move_iterator::operator- Vrátí move_iterator(*this) -= první odečítáním hodnoty vpravo od aktuální pozice.
move_iterator::operator[] Vrací objekt (reference)*(*this + off). Umožňuje určit posun od aktuálního základu k získání hodnoty v tomto umístění.
move_iterator::operator+ Vrátí move_iterator(*this) += hodnotu. Umožňuje přidat posun k základu k získání hodnoty v tomto umístění.
move_iterator::operator+= Přidá hodnotu vpravo do uloženého iterátoru a vrátí hodnotu *this.
move_iterator::operator-= Odečte hodnotu vpravo od uloženého iterátoru a vrátí *this.

Požadavky

Header:<iterator>

Obor názvů: std

move_iterator::base

Vrátí uložený iterátor pro toto move_iterator.

RandomIterator base() const;

Poznámky

Členová funkce vrátí uložený iterátor.

move_iterator::d ifference_type

Typ difference_type je move_iterator typedef založen na vlastnosti difference_typeiterátoru a lze jej zaměnitelně s ním.

typedef typename iterator_traits<RandomIterator>::difference_type difference_type;

Poznámky

Typ je synonymem pro vlastnost typename iterator_traits<RandomIterator>::pointeriterátoru .

move_iterator::iterator_category

Typ iterator_category je move_iterator typedef založen na vlastnosti iterator_categoryiterátoru a lze jej zaměnitelně s ním.

typedef typename iterator_traits<RandomIterator>::iterator_category  iterator_category;

Poznámky

Typ je synonymem pro vlastnost typename iterator_traits<RandomIterator>::iterator_categoryiterátoru .

move_iterator::iterator_type

Typ iterator_type je založen na parametru RandomIterator šablony pro šablonu move_iteratortřídy a lze jej použít zaměnitelně na svém místě.

typedef RandomIterator iterator_type;

Poznámky

Typ je synonymem pro parametr RandomIteratoršablony .

move_iterator::move_iterator

Vytvoří iterátor přesunutí. Použije parametr jako uložený iterátor.

move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);

Parametry

Vpravo
Iterátor, který se má použít jako uložený iterátor.

Poznámky

První konstruktor inicializuje uložený iterátor s jeho výchozí konstruktor. Zbývající konstruktory inicializují uložený iterátor pomocí base.base().

move_iterator::operator+=

Přidá posun uloženého iterátoru, aby uložený iterátor odkazuje na prvek v novém aktuálním umístění. Operátor pak přesune nový aktuální prvek.

move_iterator& operator+=(difference_type _Off);

Parametry

_Pryč
Posun, který se má přidat k aktuální pozici, aby bylo možné určit novou aktuální pozici.

Návratová hodnota

Vrátí nový aktuální prvek.

Poznámky

Operátor přidá _Off do uloženého iterátoru. Pak vrátí *this.

move_iterator::operator-=

Přesune zadaný počet předchozích prvků. Tento operátor odečte posun od uloženého iterátoru.

move_iterator& operator-=(difference_type _Off);

Parametry

Poznámky

Operátor vyhodnotí *this += -_Off. Pak vrátí *this.

move_iterator::operator++

Zvýší uložený iterátor, který patří do tohoto move_iteratorobjektu . K aktuálnímu prvku přistupuje operátor postincrement. Další prvek je přístupný operátorem preinkrementu.

move_iterator& operator++();
move_iterator operator++(int);

Parametry

Poznámky

První operátor (preincrement) zvýší uložený iterátor. Pak vrátí *this.

Druhý operátor (postincrement) vytvoří kopii *this, vyhodnotí ++*this. Potom vrátí kopii.

move_iterator::operator+

Vrátí pozici iterátoru rozšířenou o libovolný počet prvků.

move_iterator operator+(difference_type _Off) const;

Parametry

Poznámky

Operátor vrátí move_iterator(*this) += _Off.

move_iterator::operator[]

Umožňuje přístup indexu pole k prvkům v rozsahu move iterator.

reference operator[](difference_type _Off) const;

Parametry

Poznámky

Operátor vrátí (reference)*(*this + _Off).

move_iterator::operator--

Operátory členů před a podekrementace provádějí dekrementace uloženého iterátoru.

move_iterator& operator--();
move_iterator operator--();

Parametry

Poznámky

První operátor členu (predekrement) dekrementuje uložený iterátor. Pak vrátí *this.

Druhý operátor (postdekrement) vytvoří kopii *this, vyhodnotí --*this. Potom vrátí kopii.

move_iterator::operator-

Dekrementuje uložený iterátor a vrátí uvedenou hodnotu.

move_iterator operator-(difference_type _Off) const;

Parametry

Poznámky

Operátor vrátí move_iterator(*this) -= _Off.

move_iterator::operator*

Dereferences uložený iterátor a vrátí hodnotu. Chová se jako přiřazení rvalue reference přesunutí a provádí ho. Operátor přenese aktuální prvek ze základního iterátoru. Následující prvek se stane novým aktuálním prvkem.

reference operator*() const;

Poznámky

Operátor vrátí (reference)*base().

move_iterator::operator->

Stejně jako normální RandomIterator operator->poskytuje přístup k polím, která patří k aktuálnímu prvku.

pointer operator->() const;

Poznámky

Operátor vrátí &**this.

move_iterator::p ointer

pointer Typ je typedef založen na náhodném iterátoru RandomIterator pro move_iterator, a lze jej použít zaměnitelně.

typedef RandomIterator  pointer;

Poznámky

Typ je synonymem pro RandomIterator.

move_iterator::reference

Typ je typedef založen na value_type&& move_iterator, a lze použít zaměnitelně s value_type&&.reference

typedef value_type&& reference;

Poznámky

Typ je synonymem pro value_type&&, což je rvalue odkaz.

move_iterator::value_type

Typ value_type je move_iterator typedef založen na vlastnosti value_typeiterátoru a lze jej zaměnitelně s ním.

typedef typename iterator_traits<RandomIterator>::value_type   value_type;

Poznámky

Typ je synonymem pro vlastnost typename iterator_traits<RandomIterator>::value_typeiterátoru .

Viz také

<iterátor>
L-hodnoty a r-hodnoty
Konstruktory a operátory přiřazení pro přesunutí (C++)
Standardní knihovna C++ – referenční dokumentace