Simulacin, Reconstruccin y
Anlisis de Datos en Fsica
Experimental de Partculas
EL LENGUAJE C++
(Templates)
Templates (plantillas)
2
Se utilizan para:
Atributos (clases)
Argumentos (funciones y mtodos)
Algoritmos (ej. ordenacin)
Colecciones (ej. listas, conjuntos, arrays)
Trucos diversos (meta-programacin)
Function Templates
3
Min/Max, Qsort,
El tipo solo tiene que tener el operador < definido
//Funcion template
template <class Tipo> Tipo Min(Tipo n1, Tipo n2) {
return (n1 < n2) ? n1 : n2;
}
//Uso
int iminimo = Min<int>(10,20); // Min(10,20) iminimo == 10
double rminimo = Min(3.14, 1.22); //rminimo == 1.22
//Ejemplo con 2 meta-tipos
template <class T1, class T2> T1 Min (T1 n1, T2 n2) {
return (n1 < n2) ? n1 : n2;
}
//Uso
int j;
long int largo;
int minimo = Min<int, long int> (j,largo); //Tanto esta forma como la siguiente
int minimo = Min (j,largo);
//son equivalentes
Class templates
5
Sintxis:
template <class Tipo> class MiClase {
public:
MiClase();
~MiClase();
Tipo foo();
protected:
Tipo* atributo;
};
template <class Tipo> MiClase<Tipo>::MiClase() {}
Tc. Fund. de Simulacin, Reconstruccin y Anlisis de datos en F. Exp. de Partculas
Templates: Ejemplo
Implementacin
Declaracin
Todo en el mismo
fichero (header, .hh)
Cada vez que se utilice
se genera todo el
cdigo para el tipo
correspondiente
Ejemplo y Ejercicios:
7
Descargar template.zip
Inspeccionar Array.hh y main.cc
Ejercicios:
Obligatorios:
Implementar la funcin template Max
Probar con un array de nmeros complejos
Qu pasa cuando hacemos una copia? Corregirlo
Opcionales:
Implementar la redimensin automtica del array
Calcular cual es el mximo del array de enteros usando
una funcin template
STL
(Standard Template
Library)
Conjunto de
herramientas basadas en
templates para C++ que
proporcionan
Colecciones (estructuras
de datos)
Iteradores
Objetos funcin
Algoritmos
...
Se encuentran en el
namespace std
Tc. Fund. de Simulacin, Reconstruccin y Anlisis de datos en F. Exp. de Partculas
STL - Colecciones
9
Secuencias:
Contenedores asociativos
Vectores unidimensionales
(vector) Inserta al final
Listas doblemente enlazadas
(list) Inserta/borra en
cualquier punto
deque Inserta/borra al
principio/final
Ordenados (set y multiset)
Bsqueda rpida
Desordenados (map y
multimap) Insercin ms
rpida
Cadenas de caracteres
(string)
STL: Iteradores
10
Son tpicamente:
11
Algoritmos
Objetos funcin:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<string> SS;
SS.push_back("The number is 10");
SS.push_back("The number is 20");
SS.push_back("The final number is 30");
cout << "Loop by index:" << endl;
for (unsigned int ii=0; ii < SS.size(); ii++)
cout << SS[ii] << endl;
Ejercicio avanzado
13
http://www.cplusplus.com/reference/algorithm/sort
/
Tc. Fund. de Simulacin, Reconstruccin y Anlisis de datos en F. Exp. de Partculas