Udostępnij za pośrednictwem


move_iterator — Klasa

Szablon klasy move_iterator jest otoką dla iteratora.Move_iterator zapewnia takie samo zachowanie, jak iterator, który zawija (przechowuje), z tym wyjątkiem, że zamienia operator dereferencji przechowywanego iteratora na odwołanie rvalue, zamieniając kopię na przesunięcie.Aby uzyskać więcej informacji o rvalue, zobacz Deklarator odwołania do wartości 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;
    };

Uwagi

Klasa szablonu opisuje obiekt, który zachowuje się jak iterator, z wyjątkiem przypadków, kiedy jest wyłuskiwany.Przechowuje iterator dostępu swobodnego typu Iterator, do którego uzyskuje dostęp funkcja elementu członkowskiego base().Wszystkie operacje na move_iterator są wykonywane bezpośrednio na przechowywanym iteratorze, z tym wyjątkiem, że wynik operator* jest niejawnie rzutowany na value_type&&, aby utworzyć odwołanie rvalue.

Iterator move_iterator może być zdolny do operacji, które nie są zdefiniowane przez zawinięty iterator.Tych operacji nie powinno się używać.

Konstruktory

move_iterator

Konstruktor dla obiektów typu move_iterator.

Typedefs

move_iterator::iterator_type

Synonim dla parametru szablonu RandomIterator.

move_iterator::iterator_category

Synonim dla dłuższego wyrażenia typename o tej samej nazwie, iterator_category określa ogólne możliwości iteratora.

move_iterator::value_type

Synonim dla dłuższego wyrażenia typename o tej samej nazwie, value_type opisuje typ elementów iteratora.

move_iterator::difference_type

Synonim dla dłuższego wyrażenia typename o tej samej nazwie, difference_type opisuje typ całkowitoliczbowy wymagany do wyrażenia wartości różnicy między elementami.

move_iterator::pointer

Synonim dla parametru szablonu RandomIterator.

move_iterator::reference

Synonim dla odwołania rvaluevalue_type&&.

Funkcje elementów członkowskich

move_iterator::base

Funkcja elementu członkowskiego zwraca przechowywany iterator owinięty przez ten move_iterator.

Operatory

move_iterator::operator*

Zwraca (reference)*base().

move_iterator::operator++

Inkrementuje przechowywany iterator.Dokładne zachowanie zależy od tego, czy jest to operacja preinkrementacji, czy postinkrementacji.

move_iterator::operator--

Dekrementuje przechowywany iterator.Dokładne zachowanie zależy od tego, czy jest to operacja predekrementacji, czy postdekrementacji.

move_iterator::operator->

Zwraca &**this.

move_iterator::operator-

Zwraca move_iterator(*this) -= przez odjęcie najpierw wartości po prawej stronie od bieżącej pozycji.

move_iterator::operator[]

Zwraca (reference)*(*this + off).Pozwala określić przesunięcie od aktualnej podstawy, aby uzyskać wartość w tej lokalizacji.

move_iterator::operator+

Zwraca wartość move_iterator(*this) += .Pozwala dodać przesunięcie do aktualnej podstawy, aby uzyskać wartość w tej lokalizacji.

move_iterator::operator+=

Zwiększa wartość po prawej stronie przechowywanego iteratora i zwraca *this.

move_iterator::operator-=

Odejmuje wartość po prawej stronie od przechowywanego iteratora i zwraca *this.

Wymagania

Nagłówek: <iterator>

Przestrzeń nazw: std

Zobacz też

Zadania

Porady: zapisywanie konstruktora przenoszenia

Informacje

<iterator>

Lvalues i Rvalues

Standardowa biblioteka szablonów