Tema 1 : Standrad Template Library

download Tema 1 : Standrad Template Library

If you can't read please download the document

Transcript of Tema 1 : Standrad Template Library

  • 1. STL : Standard Template Library Mario Ynocente Castro UNI-FIIS

2. Referencia

  • http://www.sgi.com/tech/stl/

3. http://www.cppreference.com/wiki/stl/start 4. http://www.cplusplus.com/reference/stl/ 5. Ventajas

  • Estandarizada

6. Eficiente 7. Pequea, fcil de aprender 8. Flexible 9. Cdigo abierto 10. Qu logramos?

  • Menos cdigo

11. Escribir ms rpido 12. Menos bugs 13. Notas

  • Los #include no llevan .h

#include // new include method #include // vector container #include // STL algorithms using namespace std; // assume std:: 14. Contenedores

  • Contienen elementos

15. Proveen iteradores que apuntan a sus elementos 16. Proveen un conjunto mnimo de operaciones mnimas para manipular sus elementos 17. Contenedores 18. Vector (#include ) vector v(10); for(int i = 0; i < 10; i++) {v[i] = (i+1)*(i+1); } int numero_elementos = v.size(); bool esta_vacio = (v.size() == 0); // Evite usar esto bool esta_vacio = v.empty(); 19. Vector vector v; // ...vector v2(v);vector v3(v.begin(), v.end()); //v3 igual a v2 int data[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };vector primes(data, data+(sizeof(data) / sizeof(data[0]))); vector v;// ...vector v2(v.begin(), v.begin() + (v.size()/2)); 20. Vector vector v; // ... vector v2(v.rbegin()+(v.size()/2), v.rend()); vector v; // ...// Traverse all container, from begin() to end()for(vector::iterator it = v.begin(); it != v.end(); it++) {*it++; // Increment the value iterator is pointing to} 21. Vector vector v(20); for(int i = 0; i < v.size(); i++) { v[i] = i+1; } v.resize(25); for(int i = 20; i < 25; i++) { v[i] = i*2; } 22. Vector vector< vector > Matrix; int N, M; // ...vector< vector > Matrix(N, vector(M, -1)); vector v1;// ...vector v2 = v1; vector v3(v1); 23. Bsqueda en Vector vector v;for(int i = 1; i < 100; i++) {v.push_back(i*i);}if(find(v.begin(), v.end(), 49) != v.end()) {// ...} 24. Insercin en Vector vector v; // ...v.insert(v.begin()+1, 42); // Inserta 42 luego del primer elemento //los dems se desplazan vector v;vector v2;// ... v.insert(1,v2.begin(),v2.end()); 25. Eliminacin en Vector erase(iterator);erase(iterador inicial, iterador final); 26. String (#include )

  • Las cadenas estilo C no son la nica forma de manejar data con caracteres.

27. C++ tambin te permite trabajar con unaclase string , la cual soluciona problemas que se tiene al trabajar con las cadenas estilo C. 28. En particular, no tenemos que preocuparnos en manejar la memoria para la cadena. 29. String string s1 = "hello"; string s2 = string(s1); string s2 = s1; bool iguales = (s1==s2); 30. Constructores para String string() // vaca string(string s) // copia de s string(string s, int inicio) // sub-string string(string s, int inicio int long) // sub-string string(char* a) // string estilo C string(int cnt, char c) // uno o ms caracteres string(char* inicio, char* final) // [inicio, final) 31. Operadores para String

  • = : usado para asignar un valor a una cadena

32. += : usado para concatenar un string, caracter,o cadena estilo C a un string 33. + : usado para concatenacin de cadenas 34. Los operadores booleanos realizan comparaciones en el mismo orden de diccionario 35. String string s = Harry; s.c_str() //retorna s como una cadena C con int num = atoi(s.c_str());// conversin printf(%s,s.c_str()); 36. Mtodos para String strings; // ... cout tmp) { v.push_back(tmp);}} 61. String Streams string f(const vector& v) {ostringstream os;for(vector::iterator it=v.begin();it!=v.end();it++){ os