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_type
iterá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>::pointer
iterátoru .
move_iterator::iterator_category
Typ iterator_category
je move_iterator
typedef
založen na vlastnosti iterator_category
iterá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_category
iterátoru .
move_iterator::iterator_type
Typ iterator_type
je založen na parametru RandomIterator
šablony pro šablonu move_iterator
tří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_iterator
objektu . 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_type
iterá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_type
iterá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