Sdílet prostřednictvím


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

move_iterator

Konstruktor pro objekty typu move_iterator.

Typedefs

move_iterator::iterator_type

Synonymum pro parametr šablony RandomIterator.

move_iterator::iterator_category

Synonymum pro delší výraz typename stejného názvu, iterator_category určuje obecné vlastnosti iterátoru.

move_iterator::value_type

Synonymum pro delší výraz typename stejného názvu, value_type popisuje typ prvků iterátoru.

move_iterator::difference_type

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.

move_iterator::pointer

Synonymum pro parametr šablony RandomIterator.

move_iterator::reference

Synonymum pro rvalue odkaz value_type&&.

Členské funkce

move_iterator::base

Členská funkce vrátí uložený iterátor zabalený touto entitou move_iterator.

Operátory

move_iterator::operator*

Vrátí (reference)*base().

move_iterator::operator++

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.

move_iterator::operator--

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í.

move_iterator::operator->

Vrátí &**this.

move_iterator::operator-

Vrátí move_iterator(*this) -= tak, že nejprve odečte pravou hodnotu od aktuální pozice.

move_iterator::operator[]

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í.

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á k uloženému iterátoru pravou hodnotu a vrátí *this.

move_iterator::operator-=

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

Referenční dokumentace

<iterator>

Hodnoty Lvalue a Rvalue

Standardní knihovna šablon