std::input_iterator_tag, std::output_iterator_tag, std::forward_iterator_tag, std::bidirectional_iterator_tag, std::random_access_iterator_tag
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. |
<metanoindex/>
<tbody> </tbody>| Elemento definito nell'header <iterator>
|
||
struct input_iterator_tag { }; |
||
struct output_iterator_tag { }; |
||
struct forward_iterator_tag : public input_iterator_tag { }; |
||
struct bidirectional_iterator_tag : public forward_iterator_tag { }; |
||
struct random_access_iterator_tag : public bidirectional_iterator_tag { }; |
||
I tipi di vuoti
std::input_iterator_tag, std::output_iterator_tag, forward_iterator_tag, bidirectional_iterator_tag e random_access_iterator_tag sono usati per selezionare algoritmi appropriati in base alla categoria di un iteratore. Per ogni tipo di iteratore, un std::iterator_traits<Iterator>::iterator_category typedef è disponibile, che è un alias di uno di questi tipi di tag cinque.Original:
The empty types
std::input_iterator_tag, std::output_iterator_tag, forward_iterator_tag, bidirectional_iterator_tag, and random_access_iterator_tag are used to select appropriate algorithms based on the category of an iterator. For every iterator type, a typedef std::iterator_traits<Iterator>::iterator_category is available, which is an alias to one of these five tag types.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.
Esempio
Tecnica comune per la selezione algoritmo basato su tag iteratore categoria è quello di utilizzare una funzione dispatcher (l'alternativa è std :: enable_if)
Original:
Common technique for algorithm selection based on iterator category tags is to use a dispatcher function (the alternative is std::enable_if)
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 <vector>
#include <list>
#include <iterator>
template< class BDIter >
void alg(BDIter, BDIter, std::bidirectional_iterator_tag)
{
std::cout << "alg() called for bidirectional iterator\n";
}
template <class RAIter>
void alg(RAIter, RAIter, std::random_access_iterator_tag)
{
std::cout << "alg() called for random-access iterator\n";
}
template< class Iter >
void alg(Iter first, Iter last)
{
alg(first, last,
typename std::iterator_traits<Iter>::iterator_category());
}
int main()
{
std::vector<int> v;
alg(v.begin(), v.end());
std::list<int> l;
alg(l.begin(), l.end());
// std::istreambuf_iterator<char> i1(std::cin), i2;
// alg(i1, i2); // compile error: no matching function for call
}
Output:
alg() called for random-access iterator
alg() called for bidirectional iterator
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) | |
fornisce un'interfaccia uniforme per le proprietà di un iteratore Original: provides uniform interface to the properties of an 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) | |