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
Konstruktor dla obiektów typu move_iterator. |
Typedefs
Synonim dla parametru szablonu RandomIterator. |
|
Synonim dla dłuższego wyrażenia typename o tej samej nazwie, iterator_category określa ogólne możliwości iteratora. |
|
Synonim dla dłuższego wyrażenia typename o tej samej nazwie, value_type opisuje typ elementów iteratora. |
|
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. |
|
Synonim dla parametru szablonu RandomIterator. |
|
Synonim dla odwołania rvaluevalue_type&&. |
Funkcje elementów członkowskich
Funkcja elementu członkowskiego zwraca przechowywany iterator owinięty przez ten move_iterator. |
Operatory
Zwraca (reference)*base(). |
|
Inkrementuje przechowywany iterator.Dokładne zachowanie zależy od tego, czy jest to operacja preinkrementacji, czy postinkrementacji. |
|
Dekrementuje przechowywany iterator.Dokładne zachowanie zależy od tego, czy jest to operacja predekrementacji, czy postdekrementacji. |
|
Zwraca &**this. |
|
Zwraca move_iterator(*this) -= przez odjęcie najpierw wartości po prawej stronie od bieżącej pozycji. |
|
Zwraca (reference)*(*this + off).Pozwala określić przesunięcie od aktualnej podstawy, aby uzyskać wartość w tej lokalizacji. |
|
Zwraca wartość move_iterator(*this) += .Pozwala dodać przesunięcie do aktualnej podstawy, aby uzyskać wartość w tej lokalizacji. |
|
Zwiększa wartość po prawej stronie przechowywanego iteratora i zwraca *this. |
|
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