std::iterator_traits
Da cppreference.com.
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <iterator> | ||
template<class Iterator> struct iterator_traits; | ||
template<class T > struct iterator_traits<T*>; | ||
template<class T > struct iterator_traits<const T*>; | ||
std::iterator_traits
è la classe tratto tipo che fornisce un'interfaccia uniforme per le proprietà dei tipi iteratore. Ciò rende possibile implementare algoritmi solo in termini di iteratori.Original:
std::iterator_traits
is the type trait class that provides uniform interface to the properties of iterator types. This makes it possible to implement algorithms only in terms of iterators.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica]Membri tipi
Membro tipo Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
difference_type | Iterator::difference_type |
value_type | Iterator::value_type |
pointer | Iterator::pointer |
reference | Iterator::reference |
iterator_category | Iterator::iterator_category |
[modifica]Specializzazioni
Questa caratteristica può essere di tipo specializzato per fornito dall'utente tipi che possono essere utilizzati come iteratori. La libreria standard fornisce due specializzazioni parziali per i tipi di puntatore * T, che permette di utilizzare tutte iteratore con algoritmi basati su puntatori prime.
Original:
This type trait may be specialized for user-provided types that may be used as iterators. The standard library provides two partial specializations for pointer types T*, which makes it possible to use all iterator-based algorithms with raw pointers.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica]T * specializzazione utente tipi
Membro tipo Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
difference_type | std::ptrdiff_t |
value_type | T |
pointer | T* |
reference | T& |
iterator_category | std::random_access_iterator_tag |
[modifica]const T * tipi di membro di specializzazione
Membro tipo Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
difference_type | std::ptrdiff_t |
value_type | T |
pointer | const T* |
reference | const T& |
iterator_category | std::random_access_iterator_tag |
[modifica]Esempio
general-purpose reverse () implementazione per iteratori bidirezionali
Original:
general-purpose reverse() implementation for bidirectional iterators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>#include <iterator>#include <vector>#include <list> template<class BDIter>void my_reverse(BDIter first, BDIter last){typename std::iterator_traits<BDIter>::difference_type n =std::distance(first, last);--n;while(n >0){typename std::iterator_traits<BDIter>::value_type tmp =*first;*first++=*--last;*last = tmp; n -=2;}} int main(){std::vector<int> v{1,2,3,4,5}; my_reverse(v.begin(), v.end());for(int n : v)std::cout<< n <<' ';std::cout<<'\n'; std::list<int> l{1,2,3,4,5}; my_reverse(l.begin(), l.end());for(auto n : l)std::cout<< n <<' ';std::cout<<'\n'; // std::istreambuf_iterator<char> i1(std::cin), i2;// my_reverse(i1, i2); // compilation error }
Output:
5 4 3 2 1 5 4 3 2 1
[modifica]Vedi anche
l'iteratore di base Original: the basic iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe template) | |
tipologie di classi vuote per indicare categorie di iteratori Original: empty class types used to indicate iterator categories The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe) |