Diferencia entre revisiones de «Programación en C++/Librería Estándar de Plantillas\Iteradores»

Contenido eliminado Contenido añadido
El lobo (discusión | contribs.)
Sin resumen de edición
El lobo (discusión | contribs.)
Línea 28:
Con un minimo de esfuerzo, él o ella puede usar la función push() para ingresar enteros al stack; y la función pop() para retirar enteros del stack. A travez de la magia de las plantillas de C++, se puede especificar cualquier tipo de dato, no sólo enteros. La clase Stack de la STL provee la funcionalidad genérica de un stack, sin importar el tipo de dato en el stack.
 
</div>
==Estándar vector==
<div style="background:#fffeee; text-align:justify; padding:40px;">
La estructura de la clase vector pueden ser manipulados de la misma manera como se hace con las estructuras de arreglos (arrays) tradicionales en C, C++; es decir, los componentes de un vector pueden ser referenciados a travez de un índice numérico, de la misma manera que en un arreglo cualquiera. Por ejemplo, si A es un objeto de vector, entonces la instrucción: '''A[0];''' se refiere al componente 0 (primer elemento) de A. El resultado de todo esto es que usted puede navegar o iterar a travez de los componentes de una lista haciendo uso de índices y, si lo prefiere, a travez punteros iteradores. antes de ver cualquier ejemplo daremos la lista de los métodos de la clase o plantilla vector.
 
<table>
<tr><td>assign</td><td>asignar elementos al vector<td></tr>
 
at
 
regresa el componente de una posición específica
 
back
 
regresa una referencia a el último componente del vector
 
begin
 
regresa un iterator al principio del vector
 
capacity
 
regresa el número de elementos que pueden ser contenidos por el vector
 
clear
 
remueve todos los componentes del vector
 
empty
 
true si el vector está vacio
 
end
 
regresa un iterator al final del vector
 
erase
 
remueve componentes del vector
 
front
 
regresa una referencia al primer componente del vector
 
insert
 
insertar componentes en el vector
 
max_size
 
regresa el número máximo de elementos soportados por el vector
 
pop_back
 
remueve el último componente del vector
 
push_back
 
agrega un componente al final del vector
 
rbegin
 
regresa un reverse_iterator hacia el final del vector
 
rend
 
regresa un reverse_iterator hacia el inicio del vector
 
reserve
 
establece la capacidad mínima del vector
 
resize
 
cambia el tamaño del vector
 
size
 
regresa el número de componentes en el vector
 
swap
 
intercambia el contenido de un vector con el de otro
 
Para comenzar, vamos a presentar un ejemplo sencillo, el cual consistirá en crear un vector de números de punto flotante. al vector creado le agregaremos una serie de valores los cuales posteriormente serán sumados y desplegados en la pantalla del monitor. Para nuestro ejemplo vamos a emplear los métodos push_back (para agregar los números), size (para obtener el número de componentes en el vector), e iteraremos por medio de índices numéricos. Veamos.
 
// Demostracion del uso de un vector
// programa OOP301.CPP
// probado en: Dev-C++ 4.9.9.2
 
#include <cstdlib>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main(int argc, char *argv[])
{
char buffer[80];
double suma;
vector<double> v;
 
v.push_back(999.25);
v.push_back(888.50);
v.push_back(777.25);
 
suma = 0;
for(int i = 0; i < v.size(); i++)
{
suma += v[i];
sprintf(buffer, "%10.2f", v[i]);
cout << buffer << endl;
}
cout << "----------" << endl;
sprintf(buffer, "%10.2f", suma);
cout << buffer << endl;
 
system("PAUSE");
return EXIT_SUCCESS;
}
 
 
 
 
 
De acuerdo con la referencia de ayuda de Dev-C++ es más seguro emplear el método at() en lugar el eperador [] para leer o escribir componentes en un vector, ya que at() no permite índices fuera del vector, y el operador [] sí. Por ejemplo, si V es un vector cuyo número de componentes es de 3, entonces la instrucción V[5]; es sumamente peligrosa ya que el índice 5 está fuera del rango (0 a 2 ) de los componentes de V; por otro lado, la instrucción V.at(5); también está fuera de rango, salvo que at() en lugar de leer o escribir el componente referenciado lanzará (throw) un error de excepción, de tal manera que en el programa se pueda controlar la condición de error por medio de un catch. El método at() actua de manera parecida al operador [], y para ver un ejemplo de su uso compile y ejecute el siguiente programa.
 
// Demostracion del uso del método at()
// programa OOP302.CPP
// probado en: Dev-C++ 4.9.9.2
 
#include <cstdlib>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main(int argc, char *argv[])
{
vector<char> v;
 
for (int x = 'A'; x <= 'Z'; x++)
v.push_back(x);
 
for(int i = 0; i < v.size(); i++)
{
cout << v.at(i) << " ";
}
cout << endl;
 
system("PAUSE");
return EXIT_SUCCESS;
}
</div>