Cómo obtener información en c ++ usando un iterador de acceso aleatorio
La mayoría de los contenedores le permiten realizar acceso aleatorio de los datos que contienen. Por ejemplo, el Acceso aleatorio ejemplo muestra que se puede crear un iterador y luego añadir o restar de la corriente de compensación para obtener valores dentro del contenedor que iterador apoya:
#include#include using namespace std-int main () {vectorial Words-Words.push_back("Blue")-Words.push_back("Green")-Words.push_back("Teal")-Words.push_back("Brick")-Words.push_back("Purple")-Words.push_back("Brown")-Words.push_back("LightGray")-// Definir un iterator.vector azar :: iterator Iter = Words.begin () - // Acceso points.Iter aleatoria + = 5-cout lt; lt; * Iter lt; lt; endl-Iter - = 2-cout lt; lt; * Iter lt; lt; endl retorno 0-}
En este caso, el vector, Palabras, contiene una lista de siete elementos. El código crea una iterador para Palabras llamado Iter. A continuación, añade o resta de la iterador desplazamiento y muestra la pantalla de salida. Esto es lo que se ve cuando se ejecuta este ejemplo:
BrownBrick
A veces es necesario realizar una tarea especial usando un acceso aleatorio iterador. Por ejemplo, es posible que desee crear una función especial para summate los miembros de vector o simplemente una serie de miembros dentro de vector.
En este caso, debe crear una función especializada para realizar la tarea de la siguiente manera porque la biblioteca estándar no incluye ninguna función que lo haga por usted, como se muestra en la RandomAccess2 ejemplo:
#include#include using namespace std-plantilla flotar AddIt (RandomAccessIterator empezar, RandomAccessIterator final) {float Sum Índice = 0-RandomAccessIterator - // Asegúrese de que los valores están en el order.if correcta (comienza el> final) {RandomAccessIterator temp-temp = begin-iniciar = extremo a extremo = TEMP-} para (Índice = prin- Índice! = End- Índice ++) Suma + = * Índice de retención veranos} int main () {vectorial Numbers-Numbers.push_back(1.0)-Numbers.push_back(2.5)-Numbers.push_back(3.75)-Numbers.push_back(1.26)-Numbers.push_back(9.101)-Numbers.push_back(11.3)-Numbers.push_back(1.52)-// Suma el members.float individuo Sum-Sum = AddIt (Numbers.begin (), Numbers.end ()) - cout lt; lt; Sum lt; lt; endl-Sum = AddIt (Numbers.end (), Numbers.begin ()) - cout lt; lt; Sum lt; lt; endl - // Suma un range.vector :: iterator Iter = Numbers.begin () - Iter + = 5-Sum = AddIt (Iter, Numbers.end ()) - cout lt; lt; Sum lt; lt; endl retorno 0-}
Este ejemplo se basa en el ejemplo anterior. Usted todavía cree vector, Números, y llenarlo con los datos. Sin embargo, en este caso, se crea una variable de salida, Sum, que contiene la suma de los elementos contenidos en Números.
AddIt () es una función especial que acepta dos RandomAccessIterator valores como entrada. Estas dos entradas representan una gama dentro de la vector que desea manipular de alguna manera. El ejemplo simplemente los agrega, pero usted puede realizar cualquier tarea que desee. La salida es una flotador que contiene la suma.
AddIt () funciona como espera. Usted lo llama como lo haría con cualquier otra función y proporcionar un punto de inicio y un punto final dentro vector. Las dos primeras llamadas a AddIt sumar la totalidad vector, mientras que la tercera crea una iterador, cambia su desplazamiento y, a continuación resume un rango dentro vector. Aquí está la salida de este ejemplo:
30.43130.43112.82
Una de acceso aleatorio iterador puede ir en cualquier dirección. Además, se puede trabajar con los miembros individuales dentro del contenedor suministrado a iterador. Como resultado, las funciones que usted crea para iterador debe ser capaz de trabajar con las entradas en cualquier orden. ¿Cómo manejar este requisito depende del tipo de función que cree.