Anda di halaman 1dari 13

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Librera y sus funciones

Leonel bautista arones

ser utilizados por el programador para realizar determinadas operaciones. Las declaraciones de las funciones utilizadas en estas libreras, junto con algunas macros y constantes predefinidas que facilitan su utilizacin, se agrupan en ficheros de nombres conocidos que suelen encontrarse en sitios predefinidos. Librerias y sus funciones: <algorithm>: Parte de la STL que describe los algoritmos <bitset> booleanos. : Parte de la STL relativa a contenedores tipo. Set de valores

<complex> : Parte de la librera numrica de la STL relativa a los complejos. <deque> : Parte de la STL relativa a contenedores tipo deque; un tipo de colas "Double- ended-queue".

<exception> : Parte de la librera de diagnstico relativa al manejo de excepciones. <fstream> : Flujos hacia/desde ficheros.

<functional>: Parte de la STL relativa a Objetos-funcin. <iomanip> : Manipuladores. <ios> <iosfwd> : Supreclases para manejo de flujos de E/S. : Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estndar.

<iostream> : Parte del a STL que contiene los algoritmos estndar de E/S. <iterator> <limits> <list> <locale> <map> : Un tipo de puntero que permite utilizar los algoritmos de la Librera con las estructuras de datos representadas por los contenedores. : Descripcin de propiedades dependientes de la implementacin que afectan a los tipos fundamentales. : Parte de la STL relativa a contenedores tipo list listas doblemente enlazadas. : Parte de la STL relativa a la internacionalizacin. : Parte de la STL relativa a contenedores tipo map.
Lenguaje de programacion Pgina 1

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
<memory> : Utilidades relativas a la gestin de memoria, incluyendo asignadores y punteros inteligentes. <new> : Manejo de memoria dinmica

Leonel bautista arones

<numeric> : Parte de la librera numrica de la STL relativa a operaciones numricas. <ostream> : Algoritmos estndar para los flujos de salida. <queue> <set> <sstream> <stack> : Parte de la STL relativa a contenedores tipo queue colas de objetos. : Parte de la STL relativa a contenedores tipo set. : Flujos hacia/desde cadenas alfanumricas. : Parte de la STL relativa a contenedores tipo stack pilas de objetos.

<stdexcept> : Parte de la STL relativa a las clases de las que derivan los objetos lanzados por las excepciones ocasionadas en los algoritmos de la propia STL y otras expresiones. Estas clases son utilizadas para reportar errores detectados durante runtime. Los usuarios tambin pueden utilizar excepciones para reportar errores en sus propios programas. <streambuf>: Parte de la STL relativa al Almacenamiento de flujos de E/S ("Stream buffers"). Define los tipos que controlan la capa de transporte. <string : Parte de la STL relativa a contenedores tipo string; una generalizacin de las cadenas alfanumricas para albergar cadenas de objetos.

<typeinfo> : Mecanismo de identificacin de tipos en tiempo de ejecucin. <utility> : Parte de la STL que contiene elementos auxiliares como operadores y pares.

<valarray> : Parte de la librera numrica de la STL relativa a manejo de matrices numricas . <vector> : Parte de la STL relativa a los contenedores tipo vector; una generalizacin de las matrices unidimensionales C/C++.

Lenguaje de programacion

Pgina 2

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

1. Algoritmos
Sinopsis

Hemos sealado que los contenedores pueden ser considerados como estructuras de datos y que los algoritmos son como operadores que actan sobre los elementos de estas estructuras. Hemos sealado tambin que en la STL los algoritmos adoptan la forma de funciones que incluyen iteradores entre sus argumentos, lo que les permite manipular los elementos de los contenedores subyacentes. En el contexto de la STL, un algoritmo genrico es un algoritmo que no pertenece a ningn tipo particular de contenedor; obtiene informacin sobre la forma de manipular los tipos que usa a travs del anlisis de los argumentos que se le pasan. La STL ofrece un conjunto de algoritmos que puede evitarnos tener que escribir los detalles de ciertas manipulaciones de datos que se repiten una y otra vez (por ejemplo rutinas de ordenacin). Generalmente estn contenidos en la cabecera <algorithm> y generalmente conducen a un cdigo increblemente rpido y compacto, en sustitucin de lo que seran varias pginas de cdigo si tuvisemos que escribirlo por nuestros propios medios partiendo de cero. Como en el caso de los iteradores, los algoritmos de la STL utilizan una interfaz homognea cualquiera que sea el tipo de objeto (contenedor) sobre el que se apliquen. Esto permite que los conocimientos obtenidos del estudio de uno de ellos puedan ser extendidos a los dems y que su dominio no sea tan difcil como lo sera de no mantenerse este isomorfismo. Formas:

Un concepto de vital importancia para entender la mecnica de la STL es que los algoritmos no operan sobre los contenedores, sino sobre sus elementos. De forma que en ningn caso alteran la estructura de datos como tal, sino los elementos que la componen, o su orden interno. En ocasiones pueden copiar total o parcialmente el contenido de un contenedor en otro. En ciertos casos, los algoritmos que alteran el contenido del contenedor se presentan en dos versiones denominadas "in-situ" ("In-place") y de copia. La primera altera el contenido del original, la segunda produce una copia con el contenido modificado [2]. Estas ltimas se distinguen por que presentan la terminacin _copy en el nombre del algoritmo. Por ejemplo, replace() y replace_copy(). En ocasiones los algoritmos aceptan una funcin o un objeto-funcin como argumento ( , este tipo de argumentos se denomina un predicado si devuelven un booleano o un entero (que puede reducirse a un booleano . Estos argumentos son
Lenguaje de programacion Pgina 3

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

generalmente utilizados para sealar una condicin o realizar cierta computacin adicional determinada por el usuario . Los algoritmos de ordenacin y similares se presentan en dos versiones: una acepta como argumento un objeto-funcin, la otra utiliza para las comparaciones la funcin-operadoroperator<. Clasificacin

Aunque los sistemas de clasificacin son siempre artificiosos, mxime cuando se trata de este tipo de entidades, seguiremos aqu la pauta de la mayora de libros sobre la STL ofreciendo una clasificacin de los ms de 60 algoritmos ofrecidos por la Librera Estndar. La que sigue es la utilizada en el Estndar que los agrupa en tres grandes grupos y algunos subgrupos:

Operaciones no-modificativas En esta seccin se incluyen algoritmos como count o search que no modifican el iterador ni los elementos de los contenedores asociados. for_each() find() find_if() find_end() find_first_of() adyacent_find() count() count_if() mismatch() equal() search() search_n() Operaciones modificativas
o o o o o o o o o o o o

En esta seccin se incluyen algoritmos que realizan modificaciones en el iterador y/o en los elementos de los contenedores asociados. Comprende doce funciones genricas que se presentan en varias versiones .
o o o o o o

copy() swap() transform() replace() fill() generate()


Lenguaje de programacion Pgina 4

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

o o o o o o o

remove() unique() reverse() rotate() random_shuffle() partition()

Operaciones de ordenacin y similares o Ordenacin sort() stable_sort() partial_sort() partial_sort_copy() o Elemento ensimo nth_element() o Bsqueda binaria. En esta seccin se incluyen algoritmos que realizan bsquedas binarias, lo que supone que la bsqueda se realiza sobre estructuras de datos (contenedores) ordenados segn cierto criterio. Trabajan con iteradores aleatorios y secuenciales, aunque son especialmente adecuadas para los primeros, ya que para cualquier bsqueda, realizan un nmero logartmico de pasos por la estructura (ver rboles binarios . En el caso de accesos secuenciales le nmero de pasos tiende a ser lineal. lower_bound() upper_bound() equal_range() binary_search() Composicin ("Merge") merge() inplace_merge() Operaciones de comprobacin

Comprobar si un conjunto es un subconjunto de otro.


includes() Operaciones de modificacin en estructuras ordenadas

Lenguaje de programacion

Pgina 5

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

Operaciones de lgebra de conjuntos (solo pueden ser realizadas sobre contenedores ordenados).

set_union() set_intersection() set_difference() set_symmetric_difference()

Estas propiedades hacen a estas estructuras muy adecuadas para manejar colas push_heap() pop_heap() make_heap() sort_heap() Mnimos y mximos min() max() min_element() max_element() Comparaciones lexicogrficas lexicographical_compare() Generadores de permutaciones next_permutation() prev_permutation()

o o

Adems de las anteriores, el Estndar C++ define un par de algoritmos para sustituir a dos utilidades del mismo nombre existentes en la primitiva librera C Estndar. Son las funciones bsearch() y qsort(). Por supuesto pueden plantearse muchas otras clasificaciones para los algoritmos segn el criterio que se considere ms relevante. Sin embargo, los criterios de clasificacin ms significativos (que coinciden aproximadamente con los utilizados por el Estndar ) son los siguientes:

Si el algoritmo es o no modificativo, en el sentido de alterar el contenido del contenedor. El tipo de iterador que acepta como argumento

Lenguaje de programacion

Pgina 6

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Si el algoritmo exige actuar sobre un contenedor previamente ordenado, o puede actuar sobre contenedores sin ordenar. Complejidad:

Leonel bautista arones

La librera Estndar es singular en el sentido que la norma seala lo que se denomina complejidad de cada algoritmo. En la descripcin que acompaa a cada algoritmo en el documento oficial hay un apartado ("Complexity") en el que pueden encontrarse expresiones del siguiente tenor Complexity: Exactly ( last first)/2 swaps. Complexity: At most ( last first)* log( last first) swaps. Complexity: Approximately N log N (where N == last first) Complexity: It does at most N(log N)2 (where N == last first) comparisons; if enough extra memory is available, it is N log N. Lo que se pretende indicar es el grado de eficacia que puede esperarse del algoritmo en el peor de los casos, y operando sobre un nmero suficientemente grande de elementos de un contenedor. Su singularidad reside en que hasta ahora no haba sido usual que ningn fabricante de algoritmos garantizara su rendimiento de ningn modo. Su importancia estriba en que esta indicacin puede ser de gran ayuda a la hora de decidir la utilizacin de un algoritmo u otro; e indirectamente sobre el tipo de contenedor a utilizar. La complejidad seala el tiempo que emplea el algoritmo en realizar la computacin correspondiente sobre un contenedor. Naturalmente esto depende del nmero de elementos de la serie sobre la que se ejecuta. En unos casos es constante (independiente del nmero de elementos); en otros casos es lineal (una funcin constante del nmero de elementos); finalmente en ciertos casos es una funcin de otro tipo, que crece exponencialmente con el tamao del contenedor asociado. Es importante no perder de vista las condiciones para las que se garantiza la eficacia, que se refieren a operacin sobre un nmero suficientemente grande de elementos, y que el valor mostrado corresponde al peor escenario posible. Es frecuente que en condiciones reales, con nmero no excesivamente pequeos de elementos, el rendimiento de los algoritmos de la STL sea muy superior al indicado, por lo que si diseamos aplicaciones medianamente importantes se recomienda realizar pruebas comparativas con ficheros representativos de las condiciones reales. En ocasiones es frecuente tambin encontrar referencias a la complejidad amortizada que se refiere al tiempo de realizar una operacin sobre N elementos dividido por el nmero de ellos. Viene a ser una indicacin del tiempo medio que se emplea en la operacin del algoritmo sobre un miembro de un contenedor.

Lenguaje de programacion

Pgina 7

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

Lenguaje de programacion

Pgina 8

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

deque (STL/CLR)
La clase de plantilla describe un objeto que controla una secuencia de la variar-longitud de elementos que tiene acceso aleatorio.Utiliza el contenedor deque para administrar una secuencia de elementos que parezca un bloque contiguo de almacenamiento, pero que puede crecer o reduzca en cualquier extremo sin necesidad de copiar cualquier elemento restante.As puede implementar eficazmente double-ended queue.(Hence el nombre.) En la descripcin siguiente, GValue es igual que Value a menos que este ltimo es un tipo de referencia, en este caso es Value^.
template<typename Value> ref class deque : public System::ICloneable, System::Collections::IEnumerable, System::Collections::ICollection, System::Collections::Generic::IEnumerable<GValue>, System::Collections::Generic::ICollection<GValue>, System::Collections::Generic::IList<GValue>, Microsoft::VisualC::StlClr::IDeque<GValue> { ..... };

Parmetros Coeficiente El tipo genrico de un elemento de la secuencia controlada. Valor Tipo de un elemento de la secuencia controlada. Members Descripcin El tipo de un iterador constante para la secuencia deque::const_iterator (STL/CLR) controlada. deque::const_reference (STL/CLR) El tipo de una referencia constante a un elemento. deque::const_reverse_iterator El tipo de un iterador inverso constante para la (STL/CLR) secuencia controlada. El tipo de una distancia firmados entre dos deque::difference_type (STL/CLR) elementos. deque::generic_container El tipo de interfaz genrica para el contenedor. (STL/CLR) El tipo de un iterador para la interfaz genrica para el contenedor.
Lenguaje de programacion Pgina 9

Definicin de tipo

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

deque::generic_iterator (STL/CLR) deque::generic_reverse_iterator El tipo de un iterador inverso para la interfaz (STL/CLR) genrica para el contenedor. El tipo de un elemento de la interfaz genrica para deque::generic_value (STL/CLR) el contenedor. El tipo de un iterador para la secuencia controlada. deque::iterator (STL/CLR) deque::reference (STL/CLR) El tipo de una referencia a un elemento. El tipo de un iterador inverso para la secuencia deque::reverse_iterator (STL/CLR) controlada. El tipo de una distancia firmados entre dos deque::size_type (STL/CLR) elementos. deque::value_type (STL/CLR) El tipo de un elemento. Funcin miembro Descripcin Reemplaza todos los deque::assign (STL/CLR) elementos. Tiene acceso a un elemento en deque::at (STL/CLR) una posicin especificada. Tiene acceso al ltimo deque::back (STL/CLR) elemento. Designa el principio de la deque::begin (STL/CLR) secuencia controlada. deque::clear (STL/CLR) Quita todos los elementos. Construye un objeto deque::deque (STL/CLR) contenedor. Comprueba si no hay deque::empty (STL/CLR) elementos presentes. Designa el final de la secuencia deque::end (STL/CLR) controlada. Quita los elementos en las deque::erase (STL/CLR) posiciones especificadas. Tiene acceso al primer deque::front (STL/CLR) elemento. Agrega elementos en una deque::insert (STL/CLR) posicin especificada. Quita el ltimo elemento. deque::pop_back (STL/CLR)

Lenguaje de programacion

Pgina 10

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
deque::pop_front (STL/CLR) Quita el primer elemento.

Leonel bautista arones

Agrega un nuevo elemento pasado. deque::push_back (STL/CLR) deque::push_front (STL/CLR) deque::rbegin (STL/CLR) deque::rend (STL/CLR) deque::resize (STL/CLR) deque::size (STL/CLR) deque::swap (STL/CLR) deque::to_array (STL/CLR) Propiedad. deque::back_item (STL/CLR) deque::front_item (STL/CLR) Operador el deque::operator! = (STL/CLR) deque::operator[] (STL/CLR) operador < (deque) (STL/CLR) operador < = (deque) (STL/CLR) operator= (deque) (STL/CLR) operator== (deque) (STL/CLR) operador > (deque) (STL/CLR)

Agrega un nuevo primero. Designa el principio de la secuencia controlada inversa. Designa el final de la secuencia controlada inversa. Cambia el nmero de elementos. Cuenta el nmero de elementos. Intercambia el contenido de dos contenedores. Copia la secuencia controlada a una nueva matriz. Descripcin

Tiene acceso al ltimo elemento. Tiene acceso al primer elemento. Descripcin Determina si dos objetos de deque no son iguales. Tiene acceso a un elemento en una posicin especificada. Determina si un objeto de deque es menor que otro objeto de deque . Determina si un objeto de deque menor o igual que otro objeto de deque . Reemplaza la secuencia controlada. Determina si un objeto de deque es igual a otro objeto de deque . Determina si un objeto de deque es mayor que otro objeto de deque . Determina si un objeto de deque mayor o igual que otro objeto de deque .

Lenguaje de programacion

Pgina 11

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica
operador > = (deque) (STL/CLR) Interfaces Interfaz Descripcin ICloneable Dupliquen un objeto. Secuencia a travs de los elementos. IEnumerable ICollection Mantenga el grupo de elementos. IEnumerable<T> Secuencia mediante elementos escritos. ICollection<T> Mantenga el grupo de elementos escritos. IList<T> Maintain pidi al grupo de elementos escritos. IDeque<Valor> Mantenga el contenedor genrico.

Leonel bautista arones

Lenguaje de programacion

Pgina 12

Universidad Nacional San Luis Gonzaga Facultad: Ingeniera Mecnica Elctrica Escuela: Ingeniera mecnica

Leonel bautista arones

El objeto asigna y libera el almacenamiento de la secuencia que controla con una matriz almacenado de identificadores que los bloques denominados de elementos de Value .La matriz crece a peticin.El crecimiento aparece de manera que el costo de anteponiendo o de anexar un nuevo elemento sea tiempo constante, y no se perturba ningn elemento restantes.Tambin puede quitar un elemento en cualquier extremo en tiempo constante, y sin elementos restantes que modifican.As, un deque es un buen candidato al contenedor subyacente para la clase de plantilla cola (STL/CLR) o clase de plantilla pila (STL/CLR). Un objeto de deque admite iteradores de acceso aleatorio, lo que significa que puede hacer referencia a un elemento determinado directamente su posicin numrica, contando a desde cero para el primer elemento (frontal), a deque::size (STL/CLR)() - 1 para el elemento (posterior) pasado.Tambin significa que un deque es un buen candidato al contenedor subyacente para la clase de plantilla priority_queue (STL/CLR). Un iterador de deque almacena un identificador al objeto asociado de deque, as como la tendencia del elemento que seala.Puede usar iteradores nicamente con los objetos contenedores asociado.La tendencia de un elemento de deque es not necesariamente igual a su posicin.El primer elemento insertado tiene cero diagonal, el elemento anexado siguiente tiene 1 diagonal, pero el elemento work item siguiente tiene -1 diagonal. Insertar o eliminar elementos en cualquier extremo hace not modifica el valor de un elemento almacenado en cualquier tendencia vlido.Insertar o borrar un elemento interior, sin embargo, el cambio de can el valor del elemento almacenado en un tendencia determinado, por lo que el valor indicado por un iterador tambin puede cambiar.(El contenedor se puede tener que copiar elementos arriba o abajo para crear un hueco antes de una insercin o para rellenar una vulnerabilidad despus de un barrido.) Sin embargo, un iterador de deque sigue siendo vlido siempre y cuando la tendencia designa un elemento vlido.Por otra parte, un iterador vlido permanece dereferencable -- puede utilizarlo para obtener acceso o modificar el valor del elemento que seala -siempre y cuando la tendencia no es igual al tendencia para el iterador devuelto por end(). Borrar o quitar un elemento denomina destructor por el valor almacenado.Destruyendo el contenedor borra todos los elementos.As, un contenedor cuyo tipo de elemento es una clase de referencia se asegura que ningn elemento sobrevivan al contenedor.La nota, sin embargo, que un contenedor de identificadores hace not destruye sus elementos.

Lenguaje de programacion

Pgina 13

Anda mungkin juga menyukai