SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Cómo Usar los
Contenedores de STL
 Basados en Árboles
     Apoyo SSD5
Conjuntos

El contenedor set de STL almacena
elementos únicos en un conjunto
ordenado.
Las tareas de adición, eliminación y
acceso de elementos están garantizadas
por el estándar de STL para tomar un
tiempo logarítmico en un set.


               Mtl Lourdes Cahuich       2
Conjuntos
Insertar elementos con un criterio de
ordenación no degradará estas
operaciones a tiempo lineal, como es el
caso de los árboles binarios de búsqueda.
Declarar objetos de la clase set es similar
a declarar otros contenedores de STL.



                 Mtl Lourdes Cahuich      3
Conjuntos
Un programador especifica el tipo de dato
que el conjunto puede contener como un
parámetro plantilla (template).
Para acceder al contenedor set, un
programador debe incluir la biblioteca
<set>.



                Mtl Lourdes Cahuich         4
Conjuntos
Agregar elementos a un set se realiza
usando la función miembro insert.
La función miembro size regresa el
número de elementos almacenados en el
conjunto




               Mtl Lourdes Cahuich      5
Conjuntos
La función find busca un elemento
dentro de set.
Esta función regresa un iterador al
elemento encontrado.
Si el elemento no es encontrado, la
función find regresa un iterador igual
al iterador regresado por la función
end.
               Mtl Lourdes Cahuich       6
set<int> s1;
set<int> s2;
for (int i = 0; i < 20; i++) {
    s1.insert(i);
    s2.insert(30 - i);
}
cout << quot;size of s1: quot; << s1.size() << endl;
cout << quot;size of s2: quot; << s2.size() << endl;
if (s1.find(10) != s1.end()) {
  cout << quot;s1 contains 10nquot;;
}
                  Mtl Lourdes Cahuich      7
Conjuntos
Cuatro de los algoritmos genéricos de STL
están diseñados específicamente para
usarse con conjuntos.
Estas son las funciones
set_intersection, set_union,
set_difference, y
set_symmetric_difference


                Mtl Lourdes Cahuich     8
Es importante entender que estas cuatro
funciones también pueden ser usadas con
otros contenedores de STL (como vectors
y deques).
Sin embargo, son más eficientes al usarse
en conjuntos.



                Mtl Lourdes Cahuich     9
ostream_iterator<int>
 out(cout, quot; quot;);
// Set intersection
cout << quot;nset intersection: quot;;
set_intersection(s1.begin(), s1.end(),
   s2.begin(), s2.end(),                 out);
// Set union
cout << quot;nset union: quot;;
set_union(s1.begin(), s1.end(),
          s2.begin(), s2.end(),
          out);
// Set difference
cout << quot;nset difference: quot;;
set_difference(s1.begin(), s1.end(),
               s2.begin(), s2.end(),
               out);
// Set symmetric difference
cout << quot;nset symmetric difference: quot;;
set_symmetric_difference(s1.begin(), s1.end(),
                         s2.begin(), s2.end(),
                         out);
                         Mtl Lourdes Cahuich     10
Mapas
Mapas
El contenedor map de STL es una
estructura asociativa que almacena datos
en pares de valor-llave.
El contenedor map es considerado
asociativo, debido a que mapea, o asocia,
una pieza de datos (una llave) con otra
pieza de datos (un valor)


                Mtl Lourdes Cahuich     12
Mapas
Declarar un objeto de tipo map involucra
especificar el tipo de dato, tanto de la llave
como del valor.
La llave se especifica con el primer
parámetro plantilla, y el valor se especifica
con un segundo parámetro plantilla



                  Mtl Lourdes Cahuich        13
Mapas
Por ejemplo, el siguiente listado declara
dos objetos map.
El primero es un mapa de tipo string a
string.
El segundo es un mapa de tipo string a
int.



                Mtl Lourdes Cahuich         14
Mapas
// A map of strings to
   stringsmap<string, string> m1;
// A map of strings to
   intsmap<string, int> m2;




              Mtl Lourdes Cahuich   15
Mapas
Para insertar elementos en un mapa se
requiere tanto la llave como el valor.
El siguiente listado inserta dos pares
valor-llave en un mapa.




                Mtl Lourdes Cahuich      16
// A map of strings to string
smap<string, string> m1;
// A map of strings to int
smap<string, int> m2;

m1.insert(pair<string, string>(quot;applequot;,
  quot;a small red fruitquot;));
m1.insert(pair<string, string>(quot;orangequot;,
  quot;a small orange fruitquot;));



                 Mtl Lourdes Cahuich   17
Mapas
 Un mecanismo alternativo para agregar
 elementos a un mapa es el operador
 sobrecargado de doble corchete.
 El siguiente listado usa este operador para
 insertar un elemento en el mapa.

m1[quot;bananaquot;] = quot;a long yellow fruitquot;;


                  Mtl Lourdes Cahuich      18
Mapas
De manera similar al contenedor set, el
contenedor map ofrece las funciones
miembro size, find, y count.
Un programador también puede iterar a
través de los elementos almacenados en
un mapa.



                Mtl Lourdes Cahuich       19
Mapas
La implantación de la iteración de un
mapa autoriza la examinación, debido a
que es ligeramente más compleja que la
iteración estándar del contenedor.




                Mtl Lourdes Cahuich      20
map<string, string>::iterator it =
 m1.begin();
for ( ; it != m1.end(); it++) {
       cout << it->first << quot;: quot; << it->second
    << endl;
}



                    Mtl Lourdes Cahuich     21
Mapas
El listado anterior itera a través de los
elementos del objeto del mapa m1.
El aspecto importante a notar es cómo
son accedidos la llave y el valor de cada
objeto.
Internamente, un mapa almacena la llave
y el valor para cada elemento de los
datos, en un objeto de tipo pair<key,
value>.
                 Mtl Lourdes Cahuich        22
Mapas
Para acceder a la llave de un elemento a
través de un iterador, se debe
dereferenciar el iterador y luego usar el
miembro de los datos first del objeto
pair.
El miembro de los datos second brinda
acceso al valor


                Mtl Lourdes Cahuich     23
Colas de Prioridad
Colas de Prioridad
El adaptador de STL priority_queue
brinda a los programadores una interfaz
más conveniente para una cola de
prioridad.
Como el nombre sugiere, las colas de
prioridad se comportan de forma similar a
las colas regulares


                Mtl Lourdes Cahuich         25
Colas de Prioridad
Las colas de prioridad, por lo tanto,
permiten el acceso solamente al elemento
con la prioridad más alta.




                Mtl Lourdes Cahuich    26
#include <iostream>#include
  <cstdlib>#include <queue>using namespace
  std;int main(int argc, char* argv[]) {
    priority_queue<int> pq;
    pq.push(1);
    pq.push(4);
    pq.push(2);
    cout << pq.top() << endl;
 // outputs '4‘
    pq.pop();
    cout << pq.top() << endl;
 // outputs '2‘
    pq.pop();
    cout << pq.top() << endl;
 // outputs '1‘
    cout << pq.size() << endl;
 // outputs '1‘
    return EXIT_SUCCESS;
                   Mtl Lourdes Cahuich       27

}
Colas de Prioridad
El adaptador priority_queue requiere
algunos mecanismos para determinar la
prioridad relativa de elementos.
Por default, el adaptador
priority_queue usa el operador < de
los elementos, para determinar prioridad



                Mtl Lourdes Cahuich        28
Colas de Prioridad
Existe un mecanismo alternativo que un
programador puede implantar para usar
una priority_queue con objetos que
no proveen un operador <.
Este mecanismo involucra proveer al
adaptador priority_queue con una
función comparativa.


                Mtl Lourdes Cahuich      29
Colas de Prioridad
Esta función comparativa dicta cómo el
adaptador priority_queue debe
determinar la prioridad de los elementos
almacenados




                 Mtl Lourdes Cahuich       30
#include <iostream>
#include <cstdlib>
#include <string>
#include <queue>
using namespace std;
class StringCompare {
public:
     bool operator()(const string& s1, const string& s2)
 {
         if (s1.length() < s2.length()) {
             return true;
         }
         else {
             return false;
         }
     }
};
                      Mtl Lourdes Cahuich           31
int main(int argc, char* argv[]) {
// Create a priority queue that assigns longer
// strings a higher priority.
    priority_queue<string, vector<string>,StringCompare> pq;
      pq.push(quot;small stringquot;);
      pq.push(quot;a slightly longer stringquot;);
      pq.push(quot;another small stringquot;);
      cout << pq.top() << endl;
      pq.pop();
      cout << pq.top() << endl;
      pq.pop();
      cout << pq.top() << endl;
      return EXIT_SUCCESS;
}
                          Mtl Lourdes Cahuich           32
Proveer una función comparativa a un
priority_queue es también ventajoso
cuando un operador < existente no es
apropiado para su uso en la determinación
de prioridades
Si el listado no provee la función
comparativa definida-por-el-usuario, la
cola de prioridad podría usar el operador
<.
Esto podría causar que el programa
asigne la prioridad más alta a la cadena
de caracteres que alfabéticamente
precede a las otras cadenas.
                Mtl Lourdes Cahuich     33

Más contenido relacionado

La actualidad más candente

Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Funciones
FuncionesFunciones
Funcionesadark
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funcionesmoii Hp
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguajeLaura Folgado Galache
 
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)José Antonio Sandoval Acosta
 
Programación en c++
Programación en c++Programación en c++
Programación en c++andermijan
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificadocompumet sac
 
Algoritmos de ordenacion_implementacion
Algoritmos de ordenacion_implementacionAlgoritmos de ordenacion_implementacion
Algoritmos de ordenacion_implementacionJONY21
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuarioLaura Folgado Galache
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignacionesjorg_marq
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2IngEsquivel
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2luzenith_g
 
Control de trayectoria de manipulador robótico de
Control de trayectoria de manipulador robótico de Control de trayectoria de manipulador robótico de
Control de trayectoria de manipulador robótico de Juan Camarena
 

La actualidad más candente (20)

Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Separata java script
Separata java scriptSeparata java script
Separata java script
 
Funciones
FuncionesFunciones
Funciones
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Vectors
VectorsVectors
Vectors
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Algoritmos de ordenacion_implementacion
Algoritmos de ordenacion_implementacionAlgoritmos de ordenacion_implementacion
Algoritmos de ordenacion_implementacion
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Punteros2
Punteros2Punteros2
Punteros2
 
Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2Descomposicion funcional parte ii 2013 2
Descomposicion funcional parte ii 2013 2
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2
 
2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
 
Control de trayectoria de manipulador robótico de
Control de trayectoria de manipulador robótico de Control de trayectoria de manipulador robótico de
Control de trayectoria de manipulador robótico de
 

Similar a 19 Contenedores De Stl Basados En Arboles

10 Pilas
10 Pilas10 Pilas
10 PilasUVM
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a ParteUVM
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2jefer
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
7 Stl Y Los Contenedores Basicos
7 Stl Y Los Contenedores Basicos7 Stl Y Los Contenedores Basicos
7 Stl Y Los Contenedores BasicosUVM
 
9 Colas
9 Colas9 Colas
9 ColasUVM
 
Curso TIC de PHP y MSQL Parte 2
Curso TIC de PHP y MSQL Parte 2Curso TIC de PHP y MSQL Parte 2
Curso TIC de PHP y MSQL Parte 2Wilian
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsVisual Engineering
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion ContUVM
 
2011 clase17
2011 clase172011 clase17
2011 clase17PatriciaU
 
2011 clase17
2011 clase172011 clase17
2011 clase17PatriciaU
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadoresr0na91
 
Uso de los mutex y mas
Uso de los mutex y masUso de los mutex y mas
Uso de los mutex y masWhaleejaa Wha
 
7 Stl Y Los Contenedores Basicos 3 Parte
7 Stl Y Los Contenedores Basicos 3 Parte7 Stl Y Los Contenedores Basicos 3 Parte
7 Stl Y Los Contenedores Basicos 3 ParteUVM
 

Similar a 19 Contenedores De Stl Basados En Arboles (20)

10 Pilas
10 Pilas10 Pilas
10 Pilas
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte
 
Funcionamiento de un pila2
Funcionamiento de un pila2Funcionamiento de un pila2
Funcionamiento de un pila2
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
7 Stl Y Los Contenedores Basicos
7 Stl Y Los Contenedores Basicos7 Stl Y Los Contenedores Basicos
7 Stl Y Los Contenedores Basicos
 
9 Colas
9 Colas9 Colas
9 Colas
 
Java básico
Java  básicoJava  básico
Java básico
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Curso TIC de PHP y MSQL Parte 2
Curso TIC de PHP y MSQL Parte 2Curso TIC de PHP y MSQL Parte 2
Curso TIC de PHP y MSQL Parte 2
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont
 
Curso de Macros Excel
Curso de Macros ExcelCurso de Macros Excel
Curso de Macros Excel
 
2011 clase17
2011 clase172011 clase17
2011 clase17
 
2011 clase17
2011 clase172011 clase17
2011 clase17
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
Arreglos2
Arreglos2Arreglos2
Arreglos2
 
Guia final so
Guia final soGuia final so
Guia final so
 
Uso de los mutex y mas
Uso de los mutex y masUso de los mutex y mas
Uso de los mutex y mas
 
7 Stl Y Los Contenedores Basicos 3 Parte
7 Stl Y Los Contenedores Basicos 3 Parte7 Stl Y Los Contenedores Basicos 3 Parte
7 Stl Y Los Contenedores Basicos 3 Parte
 

Más de UVM

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programaciónUVM
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaUVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempoUVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosUVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlUVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadoresUVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicosUVM
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funcionesUVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bitsUVM
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreUVM
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Función main()
Función main()Función main()
Función main()UVM
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++UVM
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoUVM
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 

Más de UVM (20)

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bits
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembre
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Función main()
Función main()Función main()
Función main()
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agosto
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 

Último

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (19)

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

19 Contenedores De Stl Basados En Arboles

  • 1. Cómo Usar los Contenedores de STL Basados en Árboles Apoyo SSD5
  • 2. Conjuntos El contenedor set de STL almacena elementos únicos en un conjunto ordenado. Las tareas de adición, eliminación y acceso de elementos están garantizadas por el estándar de STL para tomar un tiempo logarítmico en un set. Mtl Lourdes Cahuich 2
  • 3. Conjuntos Insertar elementos con un criterio de ordenación no degradará estas operaciones a tiempo lineal, como es el caso de los árboles binarios de búsqueda. Declarar objetos de la clase set es similar a declarar otros contenedores de STL. Mtl Lourdes Cahuich 3
  • 4. Conjuntos Un programador especifica el tipo de dato que el conjunto puede contener como un parámetro plantilla (template). Para acceder al contenedor set, un programador debe incluir la biblioteca <set>. Mtl Lourdes Cahuich 4
  • 5. Conjuntos Agregar elementos a un set se realiza usando la función miembro insert. La función miembro size regresa el número de elementos almacenados en el conjunto Mtl Lourdes Cahuich 5
  • 6. Conjuntos La función find busca un elemento dentro de set. Esta función regresa un iterador al elemento encontrado. Si el elemento no es encontrado, la función find regresa un iterador igual al iterador regresado por la función end. Mtl Lourdes Cahuich 6
  • 7. set<int> s1; set<int> s2; for (int i = 0; i < 20; i++) { s1.insert(i); s2.insert(30 - i); } cout << quot;size of s1: quot; << s1.size() << endl; cout << quot;size of s2: quot; << s2.size() << endl; if (s1.find(10) != s1.end()) { cout << quot;s1 contains 10nquot;; } Mtl Lourdes Cahuich 7
  • 8. Conjuntos Cuatro de los algoritmos genéricos de STL están diseñados específicamente para usarse con conjuntos. Estas son las funciones set_intersection, set_union, set_difference, y set_symmetric_difference Mtl Lourdes Cahuich 8
  • 9. Es importante entender que estas cuatro funciones también pueden ser usadas con otros contenedores de STL (como vectors y deques). Sin embargo, son más eficientes al usarse en conjuntos. Mtl Lourdes Cahuich 9
  • 10. ostream_iterator<int> out(cout, quot; quot;); // Set intersection cout << quot;nset intersection: quot;; set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), out); // Set union cout << quot;nset union: quot;; set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), out); // Set difference cout << quot;nset difference: quot;; set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), out); // Set symmetric difference cout << quot;nset symmetric difference: quot;; set_symmetric_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), out); Mtl Lourdes Cahuich 10
  • 11. Mapas
  • 12. Mapas El contenedor map de STL es una estructura asociativa que almacena datos en pares de valor-llave. El contenedor map es considerado asociativo, debido a que mapea, o asocia, una pieza de datos (una llave) con otra pieza de datos (un valor) Mtl Lourdes Cahuich 12
  • 13. Mapas Declarar un objeto de tipo map involucra especificar el tipo de dato, tanto de la llave como del valor. La llave se especifica con el primer parámetro plantilla, y el valor se especifica con un segundo parámetro plantilla Mtl Lourdes Cahuich 13
  • 14. Mapas Por ejemplo, el siguiente listado declara dos objetos map. El primero es un mapa de tipo string a string. El segundo es un mapa de tipo string a int. Mtl Lourdes Cahuich 14
  • 15. Mapas // A map of strings to stringsmap<string, string> m1; // A map of strings to intsmap<string, int> m2; Mtl Lourdes Cahuich 15
  • 16. Mapas Para insertar elementos en un mapa se requiere tanto la llave como el valor. El siguiente listado inserta dos pares valor-llave en un mapa. Mtl Lourdes Cahuich 16
  • 17. // A map of strings to string smap<string, string> m1; // A map of strings to int smap<string, int> m2; m1.insert(pair<string, string>(quot;applequot;, quot;a small red fruitquot;)); m1.insert(pair<string, string>(quot;orangequot;, quot;a small orange fruitquot;)); Mtl Lourdes Cahuich 17
  • 18. Mapas Un mecanismo alternativo para agregar elementos a un mapa es el operador sobrecargado de doble corchete. El siguiente listado usa este operador para insertar un elemento en el mapa. m1[quot;bananaquot;] = quot;a long yellow fruitquot;; Mtl Lourdes Cahuich 18
  • 19. Mapas De manera similar al contenedor set, el contenedor map ofrece las funciones miembro size, find, y count. Un programador también puede iterar a través de los elementos almacenados en un mapa. Mtl Lourdes Cahuich 19
  • 20. Mapas La implantación de la iteración de un mapa autoriza la examinación, debido a que es ligeramente más compleja que la iteración estándar del contenedor. Mtl Lourdes Cahuich 20
  • 21. map<string, string>::iterator it = m1.begin(); for ( ; it != m1.end(); it++) { cout << it->first << quot;: quot; << it->second << endl; } Mtl Lourdes Cahuich 21
  • 22. Mapas El listado anterior itera a través de los elementos del objeto del mapa m1. El aspecto importante a notar es cómo son accedidos la llave y el valor de cada objeto. Internamente, un mapa almacena la llave y el valor para cada elemento de los datos, en un objeto de tipo pair<key, value>. Mtl Lourdes Cahuich 22
  • 23. Mapas Para acceder a la llave de un elemento a través de un iterador, se debe dereferenciar el iterador y luego usar el miembro de los datos first del objeto pair. El miembro de los datos second brinda acceso al valor Mtl Lourdes Cahuich 23
  • 25. Colas de Prioridad El adaptador de STL priority_queue brinda a los programadores una interfaz más conveniente para una cola de prioridad. Como el nombre sugiere, las colas de prioridad se comportan de forma similar a las colas regulares Mtl Lourdes Cahuich 25
  • 26. Colas de Prioridad Las colas de prioridad, por lo tanto, permiten el acceso solamente al elemento con la prioridad más alta. Mtl Lourdes Cahuich 26
  • 27. #include <iostream>#include <cstdlib>#include <queue>using namespace std;int main(int argc, char* argv[]) { priority_queue<int> pq; pq.push(1); pq.push(4); pq.push(2); cout << pq.top() << endl; // outputs '4‘ pq.pop(); cout << pq.top() << endl; // outputs '2‘ pq.pop(); cout << pq.top() << endl; // outputs '1‘ cout << pq.size() << endl; // outputs '1‘ return EXIT_SUCCESS; Mtl Lourdes Cahuich 27 }
  • 28. Colas de Prioridad El adaptador priority_queue requiere algunos mecanismos para determinar la prioridad relativa de elementos. Por default, el adaptador priority_queue usa el operador < de los elementos, para determinar prioridad Mtl Lourdes Cahuich 28
  • 29. Colas de Prioridad Existe un mecanismo alternativo que un programador puede implantar para usar una priority_queue con objetos que no proveen un operador <. Este mecanismo involucra proveer al adaptador priority_queue con una función comparativa. Mtl Lourdes Cahuich 29
  • 30. Colas de Prioridad Esta función comparativa dicta cómo el adaptador priority_queue debe determinar la prioridad de los elementos almacenados Mtl Lourdes Cahuich 30
  • 31. #include <iostream> #include <cstdlib> #include <string> #include <queue> using namespace std; class StringCompare { public: bool operator()(const string& s1, const string& s2) { if (s1.length() < s2.length()) { return true; } else { return false; } } }; Mtl Lourdes Cahuich 31
  • 32. int main(int argc, char* argv[]) { // Create a priority queue that assigns longer // strings a higher priority. priority_queue<string, vector<string>,StringCompare> pq; pq.push(quot;small stringquot;); pq.push(quot;a slightly longer stringquot;); pq.push(quot;another small stringquot;); cout << pq.top() << endl; pq.pop(); cout << pq.top() << endl; pq.pop(); cout << pq.top() << endl; return EXIT_SUCCESS; } Mtl Lourdes Cahuich 32
  • 33. Proveer una función comparativa a un priority_queue es también ventajoso cuando un operador < existente no es apropiado para su uso en la determinación de prioridades Si el listado no provee la función comparativa definida-por-el-usuario, la cola de prioridad podría usar el operador <. Esto podría causar que el programa asigne la prioridad más alta a la cadena de caracteres que alfabéticamente precede a las otras cadenas. Mtl Lourdes Cahuich 33