SlideShare a Scribd company logo
STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
Referencia http://www.sgi.com/tech/stl/ http://www.cppreference.com/wiki/stl/start http://www.cplusplus.com/reference/stl/
Ventajas Estandarizada Eficiente Pequeña, fácil de aprender Flexible Código abierto
Notas Los #include no llevan .h #include <cstdio> // new include method #include <vector> // vector container #include <algorithm> // STL algorithms using namespace std; // assume std::
Contenedores Contienen elementos Proveen iteradores que apuntan a sus elementos Proveen un conjunto mínimo de operaciones mínimas para manipular sus elementos
Vector vector<int> 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();
Vector vector<int> v; // ...  vector<int> v2(v);  vector<int> v3(v.begin(), v.end()); //v3 igual a v2 int data[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };  vector<int> primes(data, data+(sizeof(data) / sizeof(data[0]))); vector<int> v;  // ...  vector<int> v2(v.begin(), v.begin() + (v.size()/2));
Vector vector<int> v; // ... vector<int> v2(v.rbegin()+(v.size()/2), v.rend()); vector<int> v; // ...  // Traverse all container, from begin() to end() vector<int>::iterator it; // declaración de un iterador for(it= v.begin(); it != v.end(); it++) {  *it++; // Increment the value iterator is pointing to  }
Vector vector<int> 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; }
Vector vector< vector<int> > Matrix; // >> int N, M; // ...  vector< vector<int> > Matrix(N, vector<int>(M, -1)); vector<int> v1;  // ...  vector<int> v2 = v1; vector<int> v3(v1);
Búsqueda en Vector vector<int> v;  for(int i = 1; i < 100; i++) {  v.push_back(i*i);  }  Vector<int> :: iterator it= find(v.begin(), v.end(), 49); if(it != v.end()) {  //  ...  }
Inserción en Vector vector<int> v; // ...  v.insert(1, 42); // Insert value 42 after the first   vector<int> v;  vector<int> v2;  // ... v.insert(1,v2.begin(),v2.end());
Eliminación en Vector erase(iterator);  erase(iterador inicial, iterador final);
String string s = &quot;hello&quot;;  string  s1 = s.substr(0, 3), // &quot;hel&quot;  s2 = s.substr(1, 3), // &quot;ell&quot;  s3 = s.substr(0, s.length()-1), &quot;hell&quot;  s4 = s.substr(1); // &quot;ello&quot;
Pair template<typename T1, typename T2> struct pair { T1 first; T2 second; }; pair<string, pair<int,int> > P; string s = P.first; // extraer string int x = P.second.first; // extraer primer entero int y = P.second.second; // extract segundo entero
Set Agregar elementos No permite duplicados Remover elementos Número de elementos distintos Verificar si un elemento está en el Set
Set set<int> s;  for(int i = 1; i <= 100; i++) {  s.insert(i); } s.insert(42); // no hace nada for(int i = 2; i <= 100; i += 2) {  s.erase(i); // Borrar todos los valores pares } int n = int(s.size()); // n será 50
Set if(s.find(42) != s.end()) { // 42 presents in set  } else { // 42 not presents in set  }
Set int data[5] = { 5, 1, 4, 2, 3 };  set<int> S(data, data+5);  vector<int> v;  // …  set<int> s(all(v));  vector<int> v2(all(s));
Buscar y Borrar en Set set<int> s;  // ... set<int>::iterator it1, it2;  it1 = s.find(10);  it2 = s.find(100);  // Funcionará si it1 e it2 son iteradores válidos s.erase(it1, it2); // 10 será borrado, pero 100 permanecerá
Map map<string, int> M;  M[&quot;Top&quot;] = 1;  M[&quot;Coder&quot;] = 2;  M[&quot;SRM&quot;] = 10;  int x = M[&quot;Top&quot;] + M[&quot;Coder&quot;];  if(M.find(&quot;SRM&quot;) != M.end()) {  M.erase(M.find(&quot;SRM&quot;));  // or even M.erase(&quot;SRM&quot;)  }
Algorithm Aproximadamente 60 algoritmos standard Búsqueda Ordenamiento Transformaciones Numéricos La mayoría de las funciones toman la forma: fn(e.begin(), e.end(), ...)
Algorithm i nt data[5] = { 1, 5, 2, 4, 3 }; vector<int> X(data, data+5); int v1 = *max_element(X.begin(), X.end()); int i1 = min_element(X.begin(), X.end()) – X.begin(); int v2 = *max_element(data, data+5); int i3 = min_element(data, data+5) – data;
Algorithm vector<int> X;  // ...  sort(X.begin(), X.end()); // orden ascendente sort(X.rbegin(), X.rend()); // orden descendente vector<int> v;  for(int i = 0; i < 10; i++) {  v.push_back(i);  }  do {  Solve(..., v);  } while(next_permutation(all(v));
String Streams void f(const string& s) { istringstream is(s);  vector<int> v;  int tmp;  while(is >> tmp) { v.push_back(tmp);  }  }
String Streams string f(const vector<int>& v) {  ostringstream os;  for(vector<int>::iterator it=v.begin();it!=v.end();it++){ os << ' ' << *it;  }  s = os.str();  if(!s.empty()) s = s.substr(1);  return s;  }
Links http://uva.onlinejudge.org/ http://uvatoolkit.com/problemssolve.php http://www.topcoder.com/tc

More Related Content

TXT
Eliminación gaussiana java codigo
DOC
Ejercicios.
DOCX
[程式設計]標準差
PDF
Introduction to TDD in C
DOCX
Simulacion - Algoritmo congruencial cuadratico
PDF
NSEG17 バグのはなし
DOCX
Prueba de montecarlo
DOCX
Dado un vector imprimir cuantas vocales tiene
Eliminación gaussiana java codigo
Ejercicios.
[程式設計]標準差
Introduction to TDD in C
Simulacion - Algoritmo congruencial cuadratico
NSEG17 バグのはなし
Prueba de montecarlo
Dado un vector imprimir cuantas vocales tiene

What's hot (13)

PDF
Alocação Dinâmica em C
RTF
Ejercicio8
PDF
TXT
Pruebabfs
DOCX
Practica 10
TXT
vecotores programacion
KEY
Sbaw090630
DOCX
DOCX
Cómo crear una calculadora js jv-ng
PDF
Bcsl 033 data and file structures lab s1-2
PDF
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
Alocação Dinâmica em C
Ejercicio8
Pruebabfs
Practica 10
vecotores programacion
Sbaw090630
Cómo crear una calculadora js jv-ng
Bcsl 033 data and file structures lab s1-2
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
Ad

Viewers also liked (11)

PPTX
Stl elemeentos de la ecologia.
PDF
STL,EDM,CNC,Troqueles
PDF
Electric Discharge machining
PPTX
Plasticos
PPTX
Los polimeros y sus aleaciones
PPTX
Cnc, Cad, Cam, Cae, Capp
DOCX
SISTEMAS CAD CAM CAE Y CNC
PDF
Cad,Cam,Cae,Capp,Caqa
PPTX
PPSX
CAD/CAM/CAE/CNC
Stl elemeentos de la ecologia.
STL,EDM,CNC,Troqueles
Electric Discharge machining
Plasticos
Los polimeros y sus aleaciones
Cnc, Cad, Cam, Cae, Capp
SISTEMAS CAD CAM CAE Y CNC
Cad,Cam,Cae,Capp,Caqa
CAD/CAM/CAE/CNC
Ad

More from ovruni (20)

PDF
Cv claudiat
PDF
Pt erick g
PDF
Pt claudia t
PDF
Pt Raul C
PDF
P Raul C
PDF
P Erika T
PDF
Pt Erika T
PDF
Software Libre y GNU/Linux
ODP
OLPC
ODP
Umbrello UML Modeller
PDF
Presentación de la propuestas de la Lista Q
PDF
Presentación de la propuestas de la Lista P
PDF
Pt Patricia P
PPT
Pt Alexander A
PPT
Pt Valentina Q
PPT
Pt Eleazar A
PDF
Cv Eleazar A
PDF
Google_Code_Jam_MgErnestoBringas
PDF
GoogleCodeJam11072008
PDF
GCJ08_RoyPalacios
Cv claudiat
Pt erick g
Pt claudia t
Pt Raul C
P Raul C
P Erika T
Pt Erika T
Software Libre y GNU/Linux
OLPC
Umbrello UML Modeller
Presentación de la propuestas de la Lista Q
Presentación de la propuestas de la Lista P
Pt Patricia P
Pt Alexander A
Pt Valentina Q
Pt Eleazar A
Cv Eleazar A
Google_Code_Jam_MgErnestoBringas
GoogleCodeJam11072008
GCJ08_RoyPalacios

STL : Standard Template Library

  • 1. STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
  • 3. Ventajas Estandarizada Eficiente Pequeña, fácil de aprender Flexible Código abierto
  • 4. Notas Los #include no llevan .h #include <cstdio> // new include method #include <vector> // vector container #include <algorithm> // STL algorithms using namespace std; // assume std::
  • 5. Contenedores Contienen elementos Proveen iteradores que apuntan a sus elementos Proveen un conjunto mínimo de operaciones mínimas para manipular sus elementos
  • 6. Vector vector<int> 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();
  • 7. Vector vector<int> v; // ... vector<int> v2(v); vector<int> v3(v.begin(), v.end()); //v3 igual a v2 int data[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 }; vector<int> primes(data, data+(sizeof(data) / sizeof(data[0]))); vector<int> v; // ... vector<int> v2(v.begin(), v.begin() + (v.size()/2));
  • 8. Vector vector<int> v; // ... vector<int> v2(v.rbegin()+(v.size()/2), v.rend()); vector<int> v; // ... // Traverse all container, from begin() to end() vector<int>::iterator it; // declaración de un iterador for(it= v.begin(); it != v.end(); it++) { *it++; // Increment the value iterator is pointing to }
  • 9. Vector vector<int> 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; }
  • 10. Vector vector< vector<int> > Matrix; // >> int N, M; // ... vector< vector<int> > Matrix(N, vector<int>(M, -1)); vector<int> v1; // ... vector<int> v2 = v1; vector<int> v3(v1);
  • 11. Búsqueda en Vector vector<int> v; for(int i = 1; i < 100; i++) { v.push_back(i*i); } Vector<int> :: iterator it= find(v.begin(), v.end(), 49); if(it != v.end()) { // ... }
  • 12. Inserción en Vector vector<int> v; // ... v.insert(1, 42); // Insert value 42 after the first vector<int> v; vector<int> v2; // ... v.insert(1,v2.begin(),v2.end());
  • 13. Eliminación en Vector erase(iterator); erase(iterador inicial, iterador final);
  • 14. String string s = &quot;hello&quot;; string s1 = s.substr(0, 3), // &quot;hel&quot; s2 = s.substr(1, 3), // &quot;ell&quot; s3 = s.substr(0, s.length()-1), &quot;hell&quot; s4 = s.substr(1); // &quot;ello&quot;
  • 15. Pair template<typename T1, typename T2> struct pair { T1 first; T2 second; }; pair<string, pair<int,int> > P; string s = P.first; // extraer string int x = P.second.first; // extraer primer entero int y = P.second.second; // extract segundo entero
  • 16. Set Agregar elementos No permite duplicados Remover elementos Número de elementos distintos Verificar si un elemento está en el Set
  • 17. Set set<int> s; for(int i = 1; i <= 100; i++) { s.insert(i); } s.insert(42); // no hace nada for(int i = 2; i <= 100; i += 2) { s.erase(i); // Borrar todos los valores pares } int n = int(s.size()); // n será 50
  • 18. Set if(s.find(42) != s.end()) { // 42 presents in set } else { // 42 not presents in set }
  • 19. Set int data[5] = { 5, 1, 4, 2, 3 }; set<int> S(data, data+5); vector<int> v; // … set<int> s(all(v)); vector<int> v2(all(s));
  • 20. Buscar y Borrar en Set set<int> s; // ... set<int>::iterator it1, it2; it1 = s.find(10); it2 = s.find(100); // Funcionará si it1 e it2 son iteradores válidos s.erase(it1, it2); // 10 será borrado, pero 100 permanecerá
  • 21. Map map<string, int> M; M[&quot;Top&quot;] = 1; M[&quot;Coder&quot;] = 2; M[&quot;SRM&quot;] = 10; int x = M[&quot;Top&quot;] + M[&quot;Coder&quot;]; if(M.find(&quot;SRM&quot;) != M.end()) { M.erase(M.find(&quot;SRM&quot;)); // or even M.erase(&quot;SRM&quot;) }
  • 22. Algorithm Aproximadamente 60 algoritmos standard Búsqueda Ordenamiento Transformaciones Numéricos La mayoría de las funciones toman la forma: fn(e.begin(), e.end(), ...)
  • 23. Algorithm i nt data[5] = { 1, 5, 2, 4, 3 }; vector<int> X(data, data+5); int v1 = *max_element(X.begin(), X.end()); int i1 = min_element(X.begin(), X.end()) – X.begin(); int v2 = *max_element(data, data+5); int i3 = min_element(data, data+5) – data;
  • 24. Algorithm vector<int> X; // ... sort(X.begin(), X.end()); // orden ascendente sort(X.rbegin(), X.rend()); // orden descendente vector<int> v; for(int i = 0; i < 10; i++) { v.push_back(i); } do { Solve(..., v); } while(next_permutation(all(v));
  • 25. String Streams void f(const string& s) { istringstream is(s); vector<int> v; int tmp; while(is >> tmp) { v.push_back(tmp); } }
  • 26. String Streams string f(const vector<int>& v) { ostringstream os; for(vector<int>::iterator it=v.begin();it!=v.end();it++){ os << ' ' << *it; } s = os.str(); if(!s.empty()) s = s.substr(1); return s; }