Classe move_iterator

Il modello di classe move_iterator è un wrapper di un iteratore. Il move_iterator fornisce lo stesso comportamento dell'iteratore che esegue il wrapping (archivi), ad eccezione del fatto che trasforma l'operatore di dereferenziazione dell'iteratore archiviato in un riferimento rvalue, trasformando una copia in uno spostamento. Per altre informazioni sui riferimenti rvalue, vedere Dichiaratore di riferimento rvalue: &&.

Sintassi

class move_iterator;

Osservazioni:

Il modello di classe descrive un oggetto che si comporta come un iteratore tranne quando viene dereferenziato. Archivia un iteratore ad accesso casuale di tipo Iterator, a cui si accede tramite la funzione membro base(). Tutte le operazioni effettuate su un move_iterator vengono eseguite direttamente sull'iteratore archiviato, ad eccezione del fatto che viene eseguito il cast in modo implicito del risultato di operator* a value_type&& per creare un riferimento rvalue.

Può move_iterator essere in grado di eseguire operazioni che non sono definite dall'iteratore di cui è stato eseguito il wrapping. Queste operazioni non devono essere usate.

Costruttori

Costruttore Descrizione
move_iterator Costruttore per oggetti di tipo move_iterator.

Typedef

Nome tipo Descrizione
iterator_type Sinonimo del parametro di modello RandomIterator.
iterator_category Un sinonimo di un'espressione dello stesso nome typename più lunga, iterator_category, identifica le capacità generali dell'iteratore.
value_type Un sinonimo di un'espressione dello stesso nome typename più lunga, value_type, descrive i tipi di elementi dell'iteratore.
difference_type Un sinonimo di un'espressione dello stesso nome typename più lunga, difference_type, descrive il tipo integrale necessario per esprimere i valori di differenza tra gli elementi.
pointer Sinonimo del parametro di modello RandomIterator.
reference Sinonimo del riferimento rvaluevalue_type&&.

Funzioni membro

Funzione membro Descrizione
base La funzione membro restituisce l'iteratore archiviato di cui è stato eseguito il wrapping da move_iterator.

Operatori

Operatore Descrizione
move_iterator::operator* Restituisce (reference)*base().
move_iterator::operator++ Incrementa l'iteratore archiviato. Il comportamento esatto dipende dal fatto che si tratti di un'operazione di preincrement o postincrement.
move_iterator::operator-- Decrementa l'iteratore archiviato. Il comportamento esatto dipende dal fatto che si tratti di una dichiarazione preliminare o di un'operazione postdecrement.
move_iterator::operator-> Restituisce &**this.
move_iterator::operator- Restituisce move_iterator(*this) -= sottraendo innanzitutto il valore a destra dalla posizione corrente.
move_iterator::operator[] Restituisce (reference)*(*this + off). Consente di specificare un offset dalla base corrente per ottenere il valore in corrispondenza di tale posizione.
move_iterator::operator+ Restituisce il valore move_iterator(*this) +=. Consente di aggiungere un offset dalla base per ottenere il valore in corrispondenza di tale posizione.
move_iterator::operator+= Aggiunge il valore a destra nell'iteratore archiviato e restituisce *this.
move_iterator::operator-= Sottrae il valore a destra dall'iteratore archiviato e restituisce *this.

Requisiti

Header:<iterator>

Spazio dei nomi: std

move_iterator::base

Restituisce l'iteratore archiviato per questo move_iterator.

RandomIterator base() const;

Osservazioni:

La funzione membro restituisce l'iteratore archiviato.

move_iterator::difference_type

Il tipo difference_type è basato move_iterator typedef sul tratto difference_typeiteratore e può essere usato in modo intercambiabile con esso.

typedef typename iterator_traits<RandomIterator>::difference_type difference_type;

Osservazioni:

Il tipo è un sinonimo del tratto dell'iteratore typename iterator_traits<RandomIterator>::pointer.

move_iterator::iterator_category

Il tipo iterator_category è basato move_iterator typedef sul tratto iterator_categoryiteratore e può essere usato in modo intercambiabile con esso.

typedef typename iterator_traits<RandomIterator>::iterator_category  iterator_category;

Osservazioni:

Il tipo è un sinonimo del tratto dell'iteratore typename iterator_traits<RandomIterator>::iterator_category.

move_iterator::iterator_type

Il tipo iterator_type è basato sul parametro di modello RandomIterator per il modello di classe move_iterator e può essere usato in modo intercambiabile al suo posto.

typedef RandomIterator iterator_type;

Osservazioni:

Il tipo è un sinonimo del parametro di modello RandomIterator.

move_iterator::move_iterator

Costruisce un iteratore di spostamento. Usa il parametro come l'iteratore archiviato.

move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);

Parametri

right
Iteratore da usare come iteratore archiviato.

Osservazioni:

Il primo costruttore inizializza l'iteratore archiviato con il relativo costruttore predefinito. I rimanenti costruttori inizializzano l'iteratore archiviato con base.base().

move_iterator::operator+=

Aggiunge un offset all'iteratore archiviato, in modo che l'iteratore archiviato faccia riferimento all'elemento nella nuova posizione corrente. L'operatore passa quindi al nuovo elemento corrente.

move_iterator& operator+=(difference_type _Off);

Parametri

_Spento
Offset da aggiungere alla posizione corrente per determinare la nuova posizione corrente.

Valore restituito

Restituisce il nuovo elemento corrente.

Osservazioni:

L'operatore aggiunge _Off all'iteratore archiviato. Restituisce quindi *this.

move_iterator::operator-=

Si sposta tra un numero specificato di elementi precedenti. Questo operatore sottrae un offset dall'iteratore archiviato.

move_iterator& operator-=(difference_type _Off);

Parametri

Osservazioni:

L'operatore valuta *this += -_Off. Restituisce quindi *this.

move_iterator::operator++

Incrementa l'iteratore archiviato che appartiene a questo move_iteratoroggetto . L'elemento corrente è accessibile dall'operatore di postincrement. All'elemento successivo accederà l'operatore di incremento prefisso.

move_iterator& operator++();
move_iterator operator++(int);

Parametri

Osservazioni:

Il primo operatore (incremento prefisso) incrementa l'iteratore archiviato. Restituisce quindi *this.

Il secondo operatore (incremento suffisso) esegue una copia di *this e valuta ++*this. Restituisce quindi la copia.

move_iterator::operator+

Restituisce la posizione dell'iteratore avanzata tramite qualsiasi numero di elementi.

move_iterator operator+(difference_type _Off) const;

Parametri

Osservazioni:

L'operatore restituisce move_iterator(*this) += _Off.

move_iterator::operator[]

Consente l'accesso di indice di matrice agli elementi nell'ambito della gamma del move iterator.

reference operator[](difference_type _Off) const;

Parametri

Osservazioni:

L'operatore restituisce (reference)*(*this + _Off).

move_iterator::operator--

Gli operatori di decremento prefisso e di decremento suffisso eseguono un decremento sull'iteratore archiviato.

move_iterator& operator--();
move_iterator operator--();

Parametri

Osservazioni:

Il primo operatore membro (decremento prefisso) decrementa l'iteratore archiviato. Restituisce quindi *this.

Il secondo operatore (decremento suffisso) esegue una copia di *this e valuta --*this. Restituisce quindi la copia.

move_iterator::operator-

Decrementa l'iteratore archiviato e restituisce il valore indicato.

move_iterator operator-(difference_type _Off) const;

Parametri

Osservazioni:

L'operatore restituisce move_iterator(*this) -= _Off.

move_iterator::operator*

Dereferenzia l'iteratore archiviato e restituisce il valore. Si comporta come un oggetto rvalue reference ed esegue un'assegnazione di spostamento. L'operatore trasferisce l'elemento corrente all'esterno dell'iteratore di base. L'elemento che segue diventa il nuovo elemento corrente.

reference operator*() const;

Osservazioni:

L'operatore restituisce (reference)*base().

move_iterator::operator->

Come un normale RandomIterator operator->, fornisce l'accesso ai campi che appartengono all'elemento corrente.

pointer operator->() const;

Osservazioni:

L'operatore restituisce &**this.

move_iterator::pointer

Il tipo pointer è un typedef basato sull'iteratore casuale RandomIterator per move_iterator e può essere usato in modo intercambiabile.

typedef RandomIterator  pointer;

Osservazioni:

Il tipo è sinonimo di RandomIterator.

move_iterator::reference

Il tipo reference è un typedef basato su value_type&& per move_iterator e può essere usato in modo intercambiabile con value_type&&.

typedef value_type&& reference;

Osservazioni:

Il tipo è un sinonimo di value_type&&, che è un riferimento rvalue.

move_iterator::value_type

Il tipo value_type è basato move_iterator typedef sul tratto value_typeiteratore e può essere usato in modo intercambiabile con esso.

typedef typename iterator_traits<RandomIterator>::value_type   value_type;

Osservazioni:

Il tipo è un sinonimo del tratto dell'iteratore typename iterator_traits<RandomIterator>::value_type.

Vedi anche

<iterator>
Elementi Lvalue e Rvalue
Costruttori di spostamento e operatori di assegnazione di spostamento (C++)
Informazioni di riferimento per la libreria standard C++