Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


5.1.2c Iteradores adelante

§1 Sinopsis

Los iteradores adelante (ForwardIterator) combinan las características de los iteradores de entrada y de salida. Son de movimiento hacia delante, de forma que con ellos solo está permitido el operador ++. Pero pueden ser utilizados para lectura y escritura de datos en un contenedor.

§2 Descripción

Un ejemplo de la utilización de este tipo de iteradores lo encontramos en la función replace(). Este algoritmo, que reemplaza determinados valores de una serie, tiene la siguiente definición:

template <class ForwardIterator, class T>
  void replace (ForwardIterator first,
                ForwardIterator last,
                const T& old_value,
                const T& new_value) {
    while (first != last) {
      if (*first == old_value) *first = new_value;
      ++first;
    }
}


Además de los punteros ordinarios, que pueden ser considerados FordwardIterator, los iteradores producidos por los contenedores de la STL pueden ser utilizados como iteradores adelante. Por ejemplo, el siguiente código reemplaza todas las ocurrencias del valor 7 en una matriz de enteros M y en un contenedor tipo vector vM, por el valor 11.

int M[50];
for (int i=0 ; i<50; i++) M[i] = i;

vector<int,allocator<int> > vM(M+0, M+50);
...
replace (M, M+50, 7, 11);
replace (vM.begin(), vM.end(), 7, 11);