Udostępnij za pośrednictwem


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 RandomIteratorszablonu .
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 RandomIteratorszablonu .
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_iteratorelement .

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_typeiteratora 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>::pointeriteratora .

move_iterator::iterator_category

Typ iterator_category jest move_iterator typedef oparty na cechach iterator_categoryiteratora 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_categoryiteratora .

move_iterator::iterator_type

Typ iterator_type jest oparty na parametrze RandomIterator szablonu dla szablonu move_iteratorklasy i może być używany zamiennie w jego miejscu.

typedef RandomIterator iterator_type;

Uwagi

Typ jest synonimem parametru RandomIteratorszablonu .

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ę *thiselementu , oblicza ++*thiswartość . 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ę *thiselementu , oblicza --*thiswartość . 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_iteratorelementu 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_iteratormetodzie 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_typeiteratora 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_typeiteratora .

Zobacz też

<Sterująca>
Wartości Lvalue i Rvalue
Konstruktory przenoszące i przenoszące operatory przypisania (C++)
Dokumentacja standardowej biblioteki C++