NOMBRE: FERNANDO
YAHIR CRUZ CASTILLO
ALVARADO MORIN CAROL
ALEXANDRA
MAESTRA: MARGARITA
ROMERO ALVARADO
SEMESTRE: 2°
GRUPO: DM (PG)
BIBLIOTECAS QUE EXISTENPARA C++
¿QUE ES UNA BIBLIOTECA EN C++?
Una biblioteca de C es una colección de rutinas
utilizadas en el lenguaje de programación C. Las
bibliotecas más comunes son la biblioteca estándar
de C y la ISO y estándar ANSI C provee las
especificaciones de los estándares, las cuales son
ampliamente compartidas entre bibliotecas.
BIBLIOTECAESTANDAR DE C++
En C++, la biblioteca estándar es una colección
de clases y funciones, escritas en el núcleo del lenguaje. La
biblioteca estándar proporciona varios contenedores genéricos,
funciones para utilizar y manipular esos contenedores, funciones
objeto, cadenas y flujos genéricos (incluyendo E/S interactiva y de
archivos) y soporte para la mayoría de las características del
lenguaje. La biblioteca estándar de C++ también incorpora
la biblioteca estándar de C. Las características de la biblioteca
estándar están declaradas en el espacio de nombres std.
Standard Template Library
Es un subconjunto de la biblioteca estándar de
C++ que contiene los contenedores, algoritmos,
iteradores, funciones objeto, etc.; aunque algunas
personas utilizan el término STL indistintamente
con la biblioteca estándar de C++.
Flujos hacia/desde ficheros. Permite la
manipulación de archivos desde el programar,
tanto leer como escribir en ellos.
FSTREAM
IOSFWD
Contiene declaraciones adelantadas de todas las
plantillas de flujos y sus typedefs estándar. Por
ejemplo ostream.
IOSTREAM
Parte del a STL que contiene los algoritmos
estándar, es quizá la más usada e importante (ble)
aunque no indispensa
Contenedores de secuencias
Los contenedores de secuencias mantienen el orden de los elementos insertados que especifique.
Un contenedor de vector se comporta como una matriz, pero puede crecer automáticamente según sea
necesario. Su acceso es aleatorio y se almacena de forma contigua, y su longitud es muy flexible. Por estas
y otras razones, vector es el contenedor preferido de secuencias para la mayoría de las aplicaciones. Si no
sabe con seguridad qué tipo de contenedor de secuencias debe utilizar, empiece usando un vector. Para
más información, vea vector (Clase).
Un contenedor de array tiene algunas de las ventajas de vector, pero la longitud no es tan flexible. Para
más información, vea array (Clase).
Un contenedor de deque (cola de dos extremos) permite inserciones y eliminaciones rápidas al principio y
al final del contenedor. Comparte las ventajas de acceso aleatorio y longitud flexible de vector, pero no es
contiguo. Para más información, vea deque (Clase).
Un contenedor de list es una lista doblemente vinculada que permite el acceso bidireccional e inserciones y
eliminaciones rápidas en cualquier parte del contenedor, pero no permite tener acceso de forma aleatoria a
un elemento en el contenedor. Para más información, vea list (Clase).
Un contenedor de forward_list es una lista vinculada única (la versión de acceso de avance de list). Para
más información, vea forward_list (Clase).
Contenedores asociativos
En los contenedores asociativos, los elementos se insertan en un orden predefinido; por ejemplo, por orden ascendente. Los
contenedores asociativos sin ordenar también están disponibles. Los contenedores asociativos se pueden agrupar en dos
subconjuntos: asignaciones y conjuntos.
Una map, a la que a veces se hace referencia como un diccionario, consta de un par de clave/valor. La clave se utiliza para
ordenar la secuencia, y el valor está asociado a esa clave. Por ejemplo, una map podría contener claves que representan
cada palabra única en un texto y valores correspondientes que representan el número de veces que aparece cada palabra en
el texto. La versión no ordenada de map es unordered_map. Para más información, vea map (Clase) y unordered_map
(Clase).
Un set es simplemente es un contenedor ascendente de elementos únicos (el valor también es la clave). La versión no
ordenada de set es unordered_set. Para más información, vea set (Clase) y unordered_set (Clase).
Tanto map como set permiten solo una instancia de una clave o elemento en el contenedor. Si se requieren varias instancias
de elementos, utilice multimap o multiset. Las versiones no ordenadas son unordered_multimap y unordered_multiset.
Para más información, vea los temas multimap (Clase), unordered_multimap (Clase), multiset (Clase) y
unordered_multiset (Clase).
Las asignaciones y los conjuntos no ordenados admiten iteradores bidireccionales, y los homólogos no ordenados admiten
los iteradores hacia delante. Para más información, vea Iteradores.
Búsqueda heterogénea en contenedores asociativos (C++14)
Los contenedores asociativos ordenados (map, multimap, set y multiset) ahora admiten la búsqueda
heterogénea, lo que significa que ya no es necesario pasar exactamente el mismo tipo de objeto que la
clave o el elemento de las funciones miembro como find() y lower_bound(). En vez de eso, puede pasar
cualquier tipo para el que haya definida una sobrecarga operator< que permita la comparación con el tipo
de clave.
La búsqueda heterogénea se debe habilitar expresamente al especificar el comparador "functor rombo"
std::less<> o std::greater<> cuando se declara la variable de contenedor, como se muestra aquí:
Clase
En informática, una clase es una plantilla para la creación de objetos de datos según un modelo
predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el
lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados
para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina
instancia de la clase.
Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los
datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que
soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases.
La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características
para proporcionar encapsulación, como especificadores de acceso.
Una clase también puede tener una representación (metaobjeto) en tiempo de ejecución, que
proporciona apoyo en tiempo de ejecución para la manipulación de los metadatos relacionados con la
clase.
Funciones (Subrutina)
En informática, una subrutina o subprograma (también llamada procedimiento, función , rutina o
método), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo
principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como
Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven
un valor.
Si usa el comparador predeterminado, el contenedor se comporta exactamente igual que en C++11 y
versiones anteriores.
En el ejemplo siguiente se muestra cómo sobrecargar operator< para permitir a los usuarios de un
std::set realizar búsquedas pasando simplemente una cadena pequeña que se puede comparar con el
miembro BigObject::id de cada objeto.
Las siguientes funciones miembro de map,
multimap, set y multiset se han sobrecargado
para admitir búsquedas heterogéneas:
find
count
lower_bound
upper_bound
equal_range
Adaptadores de contenedor
Un adaptador de contenedor es una variación de un contenedor de secuencia o asociativo que restringe la
interfaz para una mayor simplicidad y claridad. Los adaptadores de contenedor no admiten iteradores.
Un contenedor de queue sigue la semántica de FIFO (primero en entrar, primero en salir). El primer
elemento insertado (es decir, insertado en la cola) es el primero en sacarse (es decir, en eliminarse de la
cola). Para más información, vea queue (Clase).
Un contenedor de priority_queue se organiza de forma que el elemento que tiene el valor más alto siempre
es el primero de la cola. Para más información, vea priority_queue (Clase).
Un contenedor de stack sigue la semántica de LIFO (último en entrar, primero en salir). El último
elemento incrustado en la pila es el primer elemento sacado. Para más información, vea stack (Clase).
Dado que los adaptadores de contenedor no admiten iteradores, no se pueden usar con los algoritmos de la
biblioteca estándar de C++. Para más información, vea Algoritmos.
Requisitos para los elementos de contenedor
Normalmente los elementos insertados en un contenedor de la biblioteca estándar de C++ pueden ser
simplemente de cualquier tipo de objeto si se pueden copiar. Móvil (solo elementos): por ejemplo, los
vector<unique_ptr<T>> creados mediante unique_ptr<> funcionarán siempre que no llame a funciones de
miembro que intenten copiarlos.
Los destructores no pueden producir excepciones.
Los contenedores asociativos ordenados (descritos anteriormente en este artículo) deben tener un operador
de comparación público definido. (De forma predeterminada, el operador es operator<, pero se admiten
incluso los que no funcionan con operator<).
Algunas operaciones en los contenedores también podrían requerir un constructor público predeterminado y
un operador de equivalencia público. Por ejemplo, los contenedores asociativos sin ordenar requieren la
compatibilidad de algoritmos hash y de igualdad.
Elementos contenedores de acceso
El acceso a los elementos de contenedores se realiza mediante iteradores.
Iteradores: Un iterador es un objeto que puede iterar sobre los elementos de un contenedor de la
biblioteca estándar de C++ y proporcionar acceso a los elementos individuales. Todos los contenedores de
la biblioteca estándar de C++ proporcionan los iteradores para que los algoritmos puedan tener acceso a
sus elementos de manera estándar sin tener que preocuparse por el tipo de contenedor en el que están
almacenados los elementos.
Comparar contenedores
Todos los contenedores sobrecargan el operador == para comparar dos contenedores del mismo tipo que tienen el mismo
tipo de elemento. Se puede usar == para comparar un vector<string> con otro vector<string>, pero no se puede usar para
comparar un vector<string> con una list<string> o un vector<string> con un vector<char*>. En C++98/03 se puede usar
std::equal o std::mismatch para comparar tipos de contenedores o elementos diferentes. En C++11 también se puede usar
std::is_permutation. Pero en todos estos casos, las funciones asumen que los contenedores tienen la misma longitud. Si el
segundo intervalo es menor que el primero, se producirá un comportamiento indefinido. Si el segundo intervalo es más
largo, los resultados pueden ser incorrectos porque la comparación no continúa más allá del final del primer intervalo.
Comparar contenedores diferentes (C++14)
En C++14 y versiones posteriores, se pueden comparar contenedores y tipos de elementos diferentes mediante una de las
sobrecargas de funciones de std::equal, std::mismatch o std::is_permutation que toman dos intervalos completos. Estas
sobrecargas le permiten comparar contenedores de distintas longitudes. Estas sobrecargas son mucho menos susceptibles
a errores del usuario y están optimizadas para devolver false en tiempo constante cuando se comparan contenedores de
longitudes diferentes. Por tanto, se recomienda usar estas sobrecargas a menos que (1) tenga un motivo muy claro para no
hacerlo o (2) use un contenedor std::list, que no se beneficia de las optimizaciones de doble intervalo.
Cabeceras estándar
Contenedores
<bitset>
provee la clase contenedora especializada std::bitset, un arreglo de bits.
<deque>
provee la plantilla clase contenedora std::deque, una cola doblemente enlazada.
<list>
provee la plantilla clase contenedora std::list, una lista doblemente enlazada.
<map>
provee las plantillas clases contenedoras std::map y std::multimap, un arreglo asociativo y un arreglo asociativo múltiple
respectivamente.
<queue>
provee la clase adaptadora contenedora std::queue, una cola de datos.
<set>
provee las plantillas clases contenedoras std::set y std::multiset, contenedores asociativos ordenados.
<stack>
provee la clase adaptadora contenedora std::stack, una pila de datos.
<vector>
provee la plantilla clase contenedora std::vector, un arreglo dinámico.

Biblioteca

  • 1.
    NOMBRE: FERNANDO YAHIR CRUZCASTILLO ALVARADO MORIN CAROL ALEXANDRA MAESTRA: MARGARITA ROMERO ALVARADO SEMESTRE: 2° GRUPO: DM (PG) BIBLIOTECAS QUE EXISTENPARA C++
  • 2.
    ¿QUE ES UNABIBLIOTECA EN C++? Una biblioteca de C es una colección de rutinas utilizadas en el lenguaje de programación C. Las bibliotecas más comunes son la biblioteca estándar de C y la ISO y estándar ANSI C provee las especificaciones de los estándares, las cuales son ampliamente compartidas entre bibliotecas.
  • 3.
    BIBLIOTECAESTANDAR DE C++ EnC++, la biblioteca estándar es una colección de clases y funciones, escritas en el núcleo del lenguaje. La biblioteca estándar proporciona varios contenedores genéricos, funciones para utilizar y manipular esos contenedores, funciones objeto, cadenas y flujos genéricos (incluyendo E/S interactiva y de archivos) y soporte para la mayoría de las características del lenguaje. La biblioteca estándar de C++ también incorpora la biblioteca estándar de C. Las características de la biblioteca estándar están declaradas en el espacio de nombres std.
  • 4.
    Standard Template Library Esun subconjunto de la biblioteca estándar de C++ que contiene los contenedores, algoritmos, iteradores, funciones objeto, etc.; aunque algunas personas utilizan el término STL indistintamente con la biblioteca estándar de C++.
  • 5.
    Flujos hacia/desde ficheros.Permite la manipulación de archivos desde el programar, tanto leer como escribir en ellos. FSTREAM IOSFWD Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream. IOSTREAM Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (ble) aunque no indispensa
  • 6.
    Contenedores de secuencias Loscontenedores de secuencias mantienen el orden de los elementos insertados que especifique. Un contenedor de vector se comporta como una matriz, pero puede crecer automáticamente según sea necesario. Su acceso es aleatorio y se almacena de forma contigua, y su longitud es muy flexible. Por estas y otras razones, vector es el contenedor preferido de secuencias para la mayoría de las aplicaciones. Si no sabe con seguridad qué tipo de contenedor de secuencias debe utilizar, empiece usando un vector. Para más información, vea vector (Clase). Un contenedor de array tiene algunas de las ventajas de vector, pero la longitud no es tan flexible. Para más información, vea array (Clase). Un contenedor de deque (cola de dos extremos) permite inserciones y eliminaciones rápidas al principio y al final del contenedor. Comparte las ventajas de acceso aleatorio y longitud flexible de vector, pero no es contiguo. Para más información, vea deque (Clase). Un contenedor de list es una lista doblemente vinculada que permite el acceso bidireccional e inserciones y eliminaciones rápidas en cualquier parte del contenedor, pero no permite tener acceso de forma aleatoria a un elemento en el contenedor. Para más información, vea list (Clase). Un contenedor de forward_list es una lista vinculada única (la versión de acceso de avance de list). Para más información, vea forward_list (Clase).
  • 7.
    Contenedores asociativos En loscontenedores asociativos, los elementos se insertan en un orden predefinido; por ejemplo, por orden ascendente. Los contenedores asociativos sin ordenar también están disponibles. Los contenedores asociativos se pueden agrupar en dos subconjuntos: asignaciones y conjuntos. Una map, a la que a veces se hace referencia como un diccionario, consta de un par de clave/valor. La clave se utiliza para ordenar la secuencia, y el valor está asociado a esa clave. Por ejemplo, una map podría contener claves que representan cada palabra única en un texto y valores correspondientes que representan el número de veces que aparece cada palabra en el texto. La versión no ordenada de map es unordered_map. Para más información, vea map (Clase) y unordered_map (Clase). Un set es simplemente es un contenedor ascendente de elementos únicos (el valor también es la clave). La versión no ordenada de set es unordered_set. Para más información, vea set (Clase) y unordered_set (Clase). Tanto map como set permiten solo una instancia de una clave o elemento en el contenedor. Si se requieren varias instancias de elementos, utilice multimap o multiset. Las versiones no ordenadas son unordered_multimap y unordered_multiset. Para más información, vea los temas multimap (Clase), unordered_multimap (Clase), multiset (Clase) y unordered_multiset (Clase). Las asignaciones y los conjuntos no ordenados admiten iteradores bidireccionales, y los homólogos no ordenados admiten los iteradores hacia delante. Para más información, vea Iteradores.
  • 8.
    Búsqueda heterogénea encontenedores asociativos (C++14) Los contenedores asociativos ordenados (map, multimap, set y multiset) ahora admiten la búsqueda heterogénea, lo que significa que ya no es necesario pasar exactamente el mismo tipo de objeto que la clave o el elemento de las funciones miembro como find() y lower_bound(). En vez de eso, puede pasar cualquier tipo para el que haya definida una sobrecarga operator< que permita la comparación con el tipo de clave. La búsqueda heterogénea se debe habilitar expresamente al especificar el comparador "functor rombo" std::less<> o std::greater<> cuando se declara la variable de contenedor, como se muestra aquí:
  • 9.
    Clase En informática, unaclase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase. Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para proporcionar encapsulación, como especificadores de acceso. Una clase también puede tener una representación (metaobjeto) en tiempo de ejecución, que proporciona apoyo en tiempo de ejecución para la manipulación de los metadatos relacionados con la clase.
  • 10.
    Funciones (Subrutina) En informática,una subrutina o subprograma (también llamada procedimiento, función , rutina o método), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor. Si usa el comparador predeterminado, el contenedor se comporta exactamente igual que en C++11 y versiones anteriores. En el ejemplo siguiente se muestra cómo sobrecargar operator< para permitir a los usuarios de un std::set realizar búsquedas pasando simplemente una cadena pequeña que se puede comparar con el miembro BigObject::id de cada objeto.
  • 11.
    Las siguientes funcionesmiembro de map, multimap, set y multiset se han sobrecargado para admitir búsquedas heterogéneas: find count lower_bound upper_bound equal_range
  • 12.
    Adaptadores de contenedor Unadaptador de contenedor es una variación de un contenedor de secuencia o asociativo que restringe la interfaz para una mayor simplicidad y claridad. Los adaptadores de contenedor no admiten iteradores. Un contenedor de queue sigue la semántica de FIFO (primero en entrar, primero en salir). El primer elemento insertado (es decir, insertado en la cola) es el primero en sacarse (es decir, en eliminarse de la cola). Para más información, vea queue (Clase). Un contenedor de priority_queue se organiza de forma que el elemento que tiene el valor más alto siempre es el primero de la cola. Para más información, vea priority_queue (Clase). Un contenedor de stack sigue la semántica de LIFO (último en entrar, primero en salir). El último elemento incrustado en la pila es el primer elemento sacado. Para más información, vea stack (Clase). Dado que los adaptadores de contenedor no admiten iteradores, no se pueden usar con los algoritmos de la biblioteca estándar de C++. Para más información, vea Algoritmos.
  • 13.
    Requisitos para loselementos de contenedor Normalmente los elementos insertados en un contenedor de la biblioteca estándar de C++ pueden ser simplemente de cualquier tipo de objeto si se pueden copiar. Móvil (solo elementos): por ejemplo, los vector<unique_ptr<T>> creados mediante unique_ptr<> funcionarán siempre que no llame a funciones de miembro que intenten copiarlos. Los destructores no pueden producir excepciones. Los contenedores asociativos ordenados (descritos anteriormente en este artículo) deben tener un operador de comparación público definido. (De forma predeterminada, el operador es operator<, pero se admiten incluso los que no funcionan con operator<). Algunas operaciones en los contenedores también podrían requerir un constructor público predeterminado y un operador de equivalencia público. Por ejemplo, los contenedores asociativos sin ordenar requieren la compatibilidad de algoritmos hash y de igualdad.
  • 14.
    Elementos contenedores deacceso El acceso a los elementos de contenedores se realiza mediante iteradores. Iteradores: Un iterador es un objeto que puede iterar sobre los elementos de un contenedor de la biblioteca estándar de C++ y proporcionar acceso a los elementos individuales. Todos los contenedores de la biblioteca estándar de C++ proporcionan los iteradores para que los algoritmos puedan tener acceso a sus elementos de manera estándar sin tener que preocuparse por el tipo de contenedor en el que están almacenados los elementos.
  • 15.
    Comparar contenedores Todos loscontenedores sobrecargan el operador == para comparar dos contenedores del mismo tipo que tienen el mismo tipo de elemento. Se puede usar == para comparar un vector<string> con otro vector<string>, pero no se puede usar para comparar un vector<string> con una list<string> o un vector<string> con un vector<char*>. En C++98/03 se puede usar std::equal o std::mismatch para comparar tipos de contenedores o elementos diferentes. En C++11 también se puede usar std::is_permutation. Pero en todos estos casos, las funciones asumen que los contenedores tienen la misma longitud. Si el segundo intervalo es menor que el primero, se producirá un comportamiento indefinido. Si el segundo intervalo es más largo, los resultados pueden ser incorrectos porque la comparación no continúa más allá del final del primer intervalo. Comparar contenedores diferentes (C++14) En C++14 y versiones posteriores, se pueden comparar contenedores y tipos de elementos diferentes mediante una de las sobrecargas de funciones de std::equal, std::mismatch o std::is_permutation que toman dos intervalos completos. Estas sobrecargas le permiten comparar contenedores de distintas longitudes. Estas sobrecargas son mucho menos susceptibles a errores del usuario y están optimizadas para devolver false en tiempo constante cuando se comparan contenedores de longitudes diferentes. Por tanto, se recomienda usar estas sobrecargas a menos que (1) tenga un motivo muy claro para no hacerlo o (2) use un contenedor std::list, que no se beneficia de las optimizaciones de doble intervalo.
  • 16.
    Cabeceras estándar Contenedores <bitset> provee laclase contenedora especializada std::bitset, un arreglo de bits. <deque> provee la plantilla clase contenedora std::deque, una cola doblemente enlazada. <list> provee la plantilla clase contenedora std::list, una lista doblemente enlazada. <map> provee las plantillas clases contenedoras std::map y std::multimap, un arreglo asociativo y un arreglo asociativo múltiple respectivamente. <queue> provee la clase adaptadora contenedora std::queue, una cola de datos. <set> provee las plantillas clases contenedoras std::set y std::multiset, contenedores asociativos ordenados. <stack> provee la clase adaptadora contenedora std::stack, una pila de datos. <vector> provee la plantilla clase contenedora std::vector, un arreglo dinámico.