LIBRERIAS EN C++
LIBRERIA <VALARRAY>(<VECTOR>)
En programación (de una sola dimensión) se le denomina vector o formación (en inglés array) a una zona de almacenamiento contiguo que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.
​
INDICE:
​
Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz:
-
Indexación base-cero (0): en este modo el primer elemento del vector será la componente cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n' componentes la última tendrá como índice el valor 'n-1'. El lenguaje C es un ejemplo típico que utiliza este modo de indexación.
-
Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz tiene el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).
-
Indexación base-n (n): este es un modo versátil de indexación en la que el índice del primer elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los índices puedan ser negativos e incluso de cualquier tipo escalar (también cadenas de caracteres).
​
FORMA DE ACCESO:
​
La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a ese elemento).
Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. La siguiente fuente escrita en el lenguaje C muestra un algoritmo típico para recorrer un vector V aplicar una función f(...) a cada una de las componentes del vector:
​

LIBRERIA <fstream>
Existen tres clases para manejar ficheros: ifstream, ofstream y fstream. La primera está orientada a ficheros de entrada, la segunda a ficheros de salida, y la tercera puede manejar cualquiera de los dos tipos o ficheros de entrada y salida.
​
ifstream();
ifstream(const char *name, int mode = ios::in,
int = filebuf::openprot);
​
El primero sólo crea un stream de entrada pero no lo asocia a ningún fichero. El segundo lo crea, lo asocia al fichero con el nombre "name" y lo abre.
Los parámetros son: el nombre del fichero, el modo, que para ifstream es ios::in por defecto. El tercer parámetro se refiere al buffer, y no nos preocupa de momento.
​
METODO OPEN
​
Todas estas clases disponen además del método "open", para abrir el fichero a lo largo de la ejecución del programa.
​
void open(const char *name, int mode,
int prot=filebuf::openprot);
​
"name" es el nombre del fichero, mode es el modo en que se abrirá, puede ser uno o una combinación del tipo enumerado open_mode, de la clase "ios":
​
enum open_mode { in, out, ate, app, trunc, nocreate,
noreplace, binary };
​
Cada uno de los valores se pueden combinar usando el operador de bits OR (|), y significan lo siguiente:
-
in: modo de entrada.
-
out: modo de salida.
-
ate: abre el fichero y sitúa el cursor al final.
-
app: modo append, parecido al anterior, pero las operaciones de escritura siempre se hacen al final del fichero.
-
trunc: si se aplica a ficheros de salida, se creará el fichero si no existe previamente, o se truncará con un tamaño de 0 bytes, si existe.
-
nocreate: impide crear un fichero si no existe, en ese caso, la función falla.
-
noreplace: lo ignoro.
-
binary: abre el fichero en modo binario.
Los tres últimos modos probablemente no son estándar, y es posible que no existan en muchos compiladores.
​
METODO CLOSE
​
void close();
​
Sencillamente, cierra el fichero asociado a un stream.
​
OPERADOR>>:
​
Igual que sucede con el stream estándar cout, el operador de flujo de salida >> se puede usar con streams de salida cuando trabajemos con texto.Ç
​
OPERADOR <<:
​
Del mismo modo, al igual que sucede con el stream estándar cin, el operador de flujo de entrada << se puede usar con streams de entrada cuando trabajemos con texto.
​
MÉTODO DE SALIDA PUT:
​
ostream& put(char ch);
​
Sirve para cualquier stream de salida, e inserta un carácter en el stream.
​
MÉTODO DE ENTRADA GET:
​
int get();
istream& get(char*, int len, char = '\n');
istream& get(char&);
istream& get(streambuf&, char = '\n');
​
-
La primera forma no se recomienda y se considera obsoleta, lee un carácter desde el stream de entrada.
-
La segunda lee caracteres y los almacena en el buffer indicado en el primer parámetro hasta que se leen "len" caracteres o hasta que se encuentra el carácter indicado en el tercer parámetro, que por defecto es el retorno de línea.
-
La tercera forma extrae un único carácter en la referencia a char proporcionada.
-
La cuarta no nos interesa de momento.
​
Veamos el ejemplo anterior de mostrar dos veces un fichero, pero esta vez escrito para C++ usando streams:
​

LIBRERIA <iomanip>
Provee facilidades para manipular el formateo de salida, así como la base utilizada cuando se formatean enteros y los valores precisión o punto flotante.
Encabezado que proporciona manipuladores paramétricos:
Los manipuladores paramétricos que nos ofrece son:
setiosflags: Set format flags (function )
resetiosflags: Reset format flags (function )
setbase: Set basefield flag (function )
setfil: Set fill character (function )
setprecision: Set decimal precision (function )
setw: Set field width (function )
get_money : Get monetary value (function )
put_money : Put monetary value (function )
get_time : Get date and time (function )
put_time : Put date and time (function )
​
​
Ejemplos de Manipuladores Paramétricos:
​
SETIOSFLAGS:
​
​
​
​
​
​
​
Este código utiliza setiosflags para activar las"banderas" showbase y uppercase , con el mismo efecto como si se insertaran los manipuladores showbase y uppercase.
​
RESETIOSFLAGS:
​
​
​
​
​
​
​
Este código estable la "bandera" showbase y luego la resetea uitlizando el manipulador RESETIOSFLAG.
​
SETBASE:
​
​
​
​
​
​
Este código utiliza el manipulador setbase para establecer el hexadecimal como el indicador selectivo de campo base.
​
SETFIL:
​
​
​
​
​
​
Establece c como el carácter de relleno de la secuencia.
Se comporta como si el relleno de miembros se llamara con c como argumento en el flujo en el que se inserta como un manipulador (se puede insertar en flujos de salida).
​
SETPRECISION:
​
​
​
​
​
​
​
​
​
Establece la precisión decimal que se utilizará para formatear valores de punto flotante en las operaciones de salida.
Se comporta como si la precisión del miembro se llamara con n como argumento en el flujo en el que se inserta / extrae como un manipulador (se puede insertar / extraer en flujos de entrada o flujos de salida).
​
SETW:
​
​
​
​
​
​
Establece el ancho del campo que se utilizará en las operaciones de salida.
Se comporta como si el ancho de miembro se llamara con n como argumento en el flujo en el que se inserta / extrae como un manipulador (se puede insertar / extraer en flujos de entrada o flujos de salida).
​
GET_MONEY:
​
​
​
​
​
​
​
​
​
Extrae caracteres del flujo de entrada al que se aplica y los interpreta como una expresión monetaria, que se almacena como el valor del dinero .
Internamente, la función accede a la secuencia de entrada construyendo primero un objeto de tipo basic_istream :: sentry (con noskipws establecido en false). Luego (si la evaluación del objeto centinela es verdadera), llama a money_get :: get (utilizando la configuración regional seleccionada de la secuencia) para realizar las operaciones de extracción y análisis, y ajusta las banderas de estado internas de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de volver.
​
PUT_MONEY:
​
​
​
​
​
​
Inserta la representación de mon como un valor monetario en el flujo de salida al que se aplica.
Internamente, la función accede a la secuencia de salida construyendo primero un objeto de tipo basic_ostream :: sentry. Luego (si la evaluación del objeto centinela es verdadera), llama a money_put :: put (usando la configuración regional seleccionada de la secuencia) para realizar tanto el formateo como las operaciones de inserción, ajustando los indicadores de estado interno de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de volver.
​
GET_TIME:
​
​
​
​
​
​
​
​
​
​
​
​
Extrae caracteres de la secuencia de entrada a la que se aplica y los interpreta como información de fecha y hora tal como se especifica en el argumento fmt. Los datos obtenidos se almacenan en el objeto struct tm apuntado por tmb.
Internamente, la función accede a la secuencia de entrada construyendo primero un objeto de tipo basic_istream :: sentry. Luego (si la evaluación del objeto centinela es verdadera), llama a time_get :: get (usando la configuración regional seleccionada de la secuencia) para realizar las operaciones de extracción y análisis, y ajusta los indicadores de estado interno de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de volver.
​
PUT_TIME:
​
​
​
​
​
​
​
​
​
​
Inserta la representación de la información de fecha y hora señalada por tmb, formateandola como se especifica en el argumento fmt.
Internamente, la función accede a la secuencia de salida construyendo primero un objeto de tipo basic_ostream :: sentry. Luego (si la evaluación del objeto centinela es verdadera), llama a time_put :: put (usando la configuración regional seleccionada de la secuencia) para realizar tanto el formateo como las operaciones de inserción, ajustando los indicadores de estado interno de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de volver.
Inserta la representación de la información de fecha y hora señalada por tmb, formateandola como se especifica en el argumento fmt.
Internamente, la función accede a la secuencia de salida construyendo primero un objeto de tipo basic_ostream :: sentry. Luego (si la evaluación del objeto centinela es verdadera), llama a time_put :: put (usando la configuración regional seleccionada de la secuencia) para realizar tanto el formateo como las operaciones de inserción, ajustando los indicadores de estado interno de la secuencia en consecuencia. Finalmente, destruye el objeto centinela antes de volver.
​
​
​
​
​









