move_iterator — Klasa
Szablon move_iterator
klasy jest otoką iteratora. Move_iterator zapewnia takie samo zachowanie, jak iterator, który opakowuje (magazyny), z wyjątkiem tego, że zamienia przechowywany operator wyłudzania iteratora w odwołanie rvalue, zamieniając kopię w przeniesienie. Aby uzyskać więcej informacji na temat wartości rvalue, zobacz Rvalue Reference Deklarator: &&.
Składnia
class move_iterator;
Uwagi
Szablon klasy opisuje obiekt, który zachowuje się jak iterator, z wyjątkiem przypadków wyłudzonych. Przechowuje iterator dostępu losowego typu Iterator
, do której uzyskuje dostęp za pomocą funkcji base()
składowej . Wszystkie operacje na obiekcie move_iterator
są wykonywane bezpośrednio w przechowywanym iteratorze, z tą różnicą, że wynik operator*
jest niejawnie rzutowany w celu value_type&&
utworzenia odwołania do wartości rvalue.
Element move_iterator
może być w stanie wykonać operacje, które nie są zdefiniowane przez iterator opakowany. Te operacje nie powinny być używane.
Konstruktory
Konstruktor | opis |
---|---|
move_iterator | Konstruktor dla obiektów typu move_iterator . |
Typedefs
Nazwa typu | opis |
---|---|
iterator_type | Synonim parametru RandomIterator szablonu . |
iterator_category | Synonim dłuższego typename wyrażenia tej samej nazwy iterator_category identyfikuje ogólne możliwości iteratora. |
value_type | Synonim dłuższego typename wyrażenia o tej samej nazwie opisuje typ value_type elementów iteratora. |
difference_type | Synonim dłuższego typename wyrażenia o tej samej nazwie opisuje difference_type typ całkowity wymagany do wyrażania wartości różnic między elementami. |
wskaźnik | Synonim parametru RandomIterator szablonu . |
odniesienie | Synonim odwołania rvalue value_type&& . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
base | Funkcja składowa zwraca przechowywany iterator opakowany przez ten move_iterator element . |
Operatory
Operator | opis |
---|---|
move_iterator::operator* | Zwraca wartość (reference)*base() . |
move_iterator::operator++ | Inkrementuje przechowywany iterator. Dokładne zachowanie zależy od tego, czy jest to operacja wstępna, czy postinkrementacja. |
move_iterator::operator- | Dekrementuje przechowywany iterator. Dokładne zachowanie zależy od tego, czy jest to wstępnie dekodowanie, czy operacja po dekrementacji. |
move_iterator::operator-> |
Zwraca wartość &**this . |
move_iterator::operator— | Zwraca najpierw move_iterator(*this) -= odjęcie wartości po prawej stronie z bieżącego położenia. |
move_iterator::operator[] | Zwraca wartość (reference)*(*this + off) . Pozwala określić przesunięcie od aktualnej podstawy, aby uzyskać wartość w tej lokalizacji. |
move_iterator::operator+ | Zwraca move_iterator(*this) += wartość. Pozwala dodać przesunięcie do aktualnej podstawy, aby uzyskać wartość w tej lokalizacji. |
move_iterator::operator+= | Dodaje wartość prawą do przechowywanego iteratora i zwraca wartość *this . |
move_iterator::operator-= | Odejmuje wartość prawą od przechowywanego iteratora i zwraca wartość *this . |
Wymagania
Nagłówek:<iterator>
Przestrzeń nazw: std
move_iterator::base
Zwraca przechowywany iterator dla tego elementu move_iterator
.
RandomIterator base() const;
Uwagi
Funkcja składowa zwraca przechowywany iterator.
move_iterator::d ifference_type
Typ difference_type
jest move_iterator
typedef
oparty na cechach difference_type
iteratora i może być używany zamiennie z nim.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Uwagi
Typ jest synonimem cech typename iterator_traits<RandomIterator>::pointer
iteratora .
move_iterator::iterator_category
Typ iterator_category
jest move_iterator
typedef
oparty na cechach iterator_category
iteratora i może być używany zamiennie z nim.
typedef typename iterator_traits<RandomIterator>::iterator_category iterator_category;
Uwagi
Typ jest synonimem cech typename iterator_traits<RandomIterator>::iterator_category
iteratora .
move_iterator::iterator_type
Typ iterator_type
jest oparty na parametrze RandomIterator
szablonu dla szablonu move_iterator
klasy i może być używany zamiennie w jego miejscu.
typedef RandomIterator iterator_type;
Uwagi
Typ jest synonimem parametru RandomIterator
szablonu .
move_iterator::move_iterator
Tworzy iterator ruchu. Używa parametru jako przechowywanego iteratora.
move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);
Parametry
Prawy
Iterator do użycia jako przechowywany iterator.
Uwagi
Pierwszy konstruktor inicjuje przechowywany iterator z jego konstruktorem domyślnym. Pozostałe konstruktory inicjują przechowywany iterator za pomocą base.base()
polecenia .
move_iterator::operator+=
Dodaje przesunięcie do przechowywanego iteratora, dzięki czemu przechowywany iterator wskazuje element w nowej bieżącej lokalizacji. Następnie operator przenosi nowy bieżący element.
move_iterator& operator+=(difference_type _Off);
Parametry
_Od
Przesunięcie do dodania do bieżącej pozycji w celu określenia nowego bieżącego położenia.
Wartość zwracana
Zwraca nowy bieżący element.
Uwagi
Operator dodaje _Off do przechowywanego iteratora. Następnie zwraca wartość *this
.
move_iterator::operator-=
Przenosi się między określoną liczbą poprzednich elementów. Ten operator odejmuje przesunięcie od przechowywanego iteratora.
move_iterator& operator-=(difference_type _Off);
Parametry
Uwagi
Operator ocenia wartość *this += -_Off
. Następnie zwraca wartość *this
.
move_iterator::operator++
Zwiększa przechowywany iterator, który należy do tego move_iterator
. Bieżący element jest uzyskiwany przez operator postincrement. Następny element jest uzyskiwany przez operator preinkrementacji.
move_iterator& operator++();
move_iterator operator++(int);
Parametry
Uwagi
Pierwszy operator (preincrement) zwiększa przechowywany iterator. Następnie zwraca wartość *this
.
Drugi operator (postincrement) tworzy kopię *this
elementu , oblicza ++*this
wartość . Następnie zwraca kopię.
move_iterator::operator+
Zwraca położenie iteratora zaawansowane przez dowolną liczbę elementów.
move_iterator operator+(difference_type _Off) const;
Parametry
Uwagi
Operator zwraca wartość move_iterator(*this) +=
_Off
.
move_iterator::operator[]
Umożliwia dostęp indeksu tablicy do elementów w zakresie .move iterator
reference operator[](difference_type _Off) const;
Parametry
Uwagi
Operator zwraca wartość (reference)*(*this + _Off)
.
move_iterator::operator-
Operatory składowych pre-i postdecrement wykonują dekrementację przechowywanego iteratora.
move_iterator& operator--();
move_iterator operator--();
Parametry
Uwagi
Pierwszy operator składowy (wstępnie dekrementacja) dekrementuje przechowywany iterator. Następnie zwraca wartość *this
.
Drugi operator (postdecrement) tworzy kopię *this
elementu , oblicza --*this
wartość . Następnie zwraca kopię.
move_iterator::operator—
Dekrementuje przechowywany iterator i zwraca wskazaną wartość.
move_iterator operator-(difference_type _Off) const;
Parametry
Uwagi
Operator zwraca wartość move_iterator(*this) -= _Off
.
move_iterator::operator*
Wyłuszcza przechowywany iterator i zwraca wartość. Zachowuje się jak element rvalue reference
i wykonuje przypisanie przenoszenia. Operator przenosi bieżący element z iteratora podstawowego. Poniższy element staje się nowym bieżącym elementem.
reference operator*() const;
Uwagi
Operator zwraca wartość (reference)*base()
.
move_iterator::operator->
Podobnie jak w przypadku normalnego RandomIterator
operator->
elementu, zapewnia dostęp do pól należących do bieżącego elementu.
pointer operator->() const;
Uwagi
Operator zwraca wartość &**this
.
move_iterator::p ointer
Typ pointer
jest typedef
oparty na iteratorze RandomIterator
losowym dla move_iterator
elementu i może być używany zamiennie.
typedef RandomIterator pointer;
Uwagi
Typ jest synonimem .RandomIterator
move_iterator::reference
Typ reference
jest oparty na value_type&&
move_iterator
metodzie i może być używany zamiennie z elementem value_type&&
typedef
.
typedef value_type&& reference;
Uwagi
Typ jest synonimem , value_type&&
który jest odwołaniem rvalue.
move_iterator::value_type
Typ value_type
jest move_iterator
typedef
oparty na cechach value_type
iteratora i może być używany zamiennie z nim.
typedef typename iterator_traits<RandomIterator>::value_type value_type;
Uwagi
Typ jest synonimem cech typename iterator_traits<RandomIterator>::value_type
iteratora .
Zobacz też
<Sterująca>
Wartości Lvalue i Rvalue
Konstruktory przenoszące i przenoszące operatory przypisania (C++)
Dokumentacja standardowej biblioteki C++