Esta división ha sido aprobado por expertos para garantizar la veracidad de nuestro tutorial.
Definido en el encabezado
|
||
---|---|---|
template<classCategory,classT,classDistance= std::ptrdiff_t,classPointer= T*,classReference= T&>structiterator; |
(obsoleto en C++17) |
std::iterator
es la clase base proporcionada para simplificar las definiciones de los tipos necesarios para los iteradores.
Parámetros de la plantilla
Categoría | – | la categoría del iterador. Debe ser una de las etiquetas de categoría de iterador. |
T | – | el tipo de los valores que se pueden obtener desreferenciando el iterador. Este tipo debe ser void para iteradores de salida. |
Distancia | – | un tipo que se puede utilizar para identificar la distancia entre iteradores |
Puntero | – | define un puntero al tipo iterado sobre (T ) |
Referencia | – | define una referencia al tipo iterado sobre (T ) |
Tipos de miembros
tipo de miembro | Definición |
---|---|
iterator_category |
Category |
value_type |
T |
difference_type |
Distance |
pointer |
Pointer |
reference |
Reference |
Ejemplo
El siguiente ejemplo muestra cómo implementar un iterador de entrada al heredar de std::iterator.
#include#include template<long FROM,long TO>classRangepublic:// member typedefs provided through inheriting from std::iteratorclassiterator:public std::iterator< std::input_iterator_tag,// iterator_categorylong,// value_typelong,// difference_typeconstlong*,// pointerlong// reference>long num = FROM;public:explicititerator(long _num =0):num(_num) iterator&operator++()num = TO >= FROM ? num +1: num -1;return*this; iterator operator++(int)iterator retval =*this;++(*this);return retval;booloperator==(iterator other)constreturn num == other.num;booloperator!=(iterator other)constreturn!(*this== other); reference operator*()constreturn num;; iterator begin()returniterator(FROM); iterator end()returniterator(TO >= FROM? TO+1: TO-1);;intmain()// std::find requires an input iteratorauto range =Range<15,25>();auto itr = std::find(range.begin(), range.end(),18); std::cout <<*itr <<'n';// 18// Range::iterator also satisfies range-based for requirementsfor(long l :Range<3,5>()) std::cout << l <<' ';// 3 4 5 std::cout <<'n';
Producción:
18345
Ver también
iterator_traits | proporciona una interfaz uniforme para las propiedades de un iterador (plantilla de clase) |
entrada_iterador_etiquetaetiqueta_iterador_salidaadelante_iterador_etiquetaetiqueta_iterador_bidireccionaletiqueta_iterador_acceso_aleatorioetiqueta_iterador_contiguo(C++20) | tipos de clase vacíos utilizados para indicar categorías de iterador (clase) |
Aquí tienes las comentarios y valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)