move_iterator – třída
Šablona třídy move_iterator je obálkou iterátoru.Iterátor move_iterator poskytuje stejné chování jako iterátor, kterého zabalí (uloží). Výjimkou je, že operátor přesměrování uloženého iterátoru mění na odkaz hodnoty rvalue a kopírování se tak mění na přesunutí.Další informace o hodnotách rvalue naleznete v tématu Deklarátor odkazu hodnoty R: &&.
template<class Iterator>
class move_iterator {
public:
typedef Iterator iterator_type;
typedef typename
iterator_traits<Iterator>::iterator_category
iterator_category;
typedef typename iterator_traits<Iterator>::value_type
value_type;
typedef typename iterator_traits<Iterator>::difference_type
difference_type;
typedef Iterator
pointer;
typedef value_type&&
reference;
move_iterator();
explicit move_iterator (Iterator right);
template<class Type>
move_iterator (const move_iterator<Type>& right);
template <class Type>
move_iterator& operator=(const move_iterator<Type>& right);
iterator_type base () const;
reference operator* () const;
pointer operator-> () const;
move_iterator& operator++ ();
move_iterator operator++ (int);
move_iterator& operator-- ();
move_iterator operator-- (int);
move_iterator& operator+= (difference_type off);
move_iterator operator+ (difference_type off) const;
move_iterator& operator-= (difference_type off);
move_iterator operator- (difference_type off) const;
reference operator[] (difference_type off) const;
};
Poznámky
Třída šablony popisuje objekt, který se chová jako iterátor, kromě přesměrovávání.Uchovává iterátor s náhodným přístupem typu Iterator, ke kterému je přistupováno pomocí členské funkce base().Všechny operace v 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 na value_type&& pro vytvoření odkazu hodnoty rvalue.
move_iterator může provádět operace, které nejsou definovány zabaleným iterátorem.Tyto operace by neměly být použity.
Konstruktory
Konstruktor pro objekty typu move_iterator. |
Typedefs
Synonymum pro parametr šablony RandomIterator. |
|
Synonymum pro delší výraz typename stejného názvu, iterator_category určuje obecné vlastnosti iterátoru. |
|
Synonymum pro delší výraz typename stejného názvu, value_type popisuje typ prvků iterátoru. |
|
Synonymum pro delší výraz typename stejného názvu, difference_type popisuje typ integrálu požadovaný k vyjádření rozdílných hodnot mezi prvky. |
|
Synonymum pro parametr šablony RandomIterator. |
|
Synonymum pro rvalue odkaz value_type&&. |
Členské funkce
Členská funkce vrátí uložený iterátor zabalený touto entitou move_iterator. |
Operátory
Vrátí (reference)*base(). |
|
Zvýší uložený iterátor.Přesné chování závisí na tom, zda se jedná o operaci před přírůstkem nebo po přírůstku. |
|
Sníží uložený iterátor.Přesné chování závisí na tom, zda se jedná o operaci před snížením nebo po snížení. |
|
Vrátí &**this. |
|
Vrátí move_iterator(*this) -= tak, že nejprve odečte pravou hodnotu od aktuální pozice. |
|
Vrátí (reference)*(*this + off).Umožňuje určit posun od aktuálního základu k získání hodnoty v tomto umístění. |
|
Vrátí move_iterator(*this) += hodnotu.Umožňuje přidat posun k základu k získání hodnoty v tomto umístění. |
|
Přidá k uloženému iterátoru pravou hodnotu a vrátí *this. |
|
Odečte od uloženého iterátoru pravou hodnotu a vrátí *this. |
Požadavky
Hlavička: <iterator>
Obor názvů: std
Viz také
Úkoly
Postupy: Zápis konstruktoru přesunu