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 rvalue value_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_type
iteratore 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_category
iteratore 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_iterator
oggetto . 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_type
iteratore 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++