STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
Referencia <ul><ul><li>http://www.sgi.com/tech/stl/ </li></ul></ul><ul><ul><li>http://www.cppreference.com/wiki/stl/start ...
Ventajas <ul><ul><li>Estandarizada </li></ul></ul><ul><ul><li>Eficiente </li></ul></ul><ul><ul><li>Pequeña, fácil de apren...
Notas Los #include no llevan .h #include <cstdio> // new include method #include <vector> // vector container #include <al...
Contenedores <ul><ul><li>Contienen elementos </li></ul></ul><ul><ul><li>Proveen iteradores que apuntan a sus elementos </l...
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_...
Vector vector<int> v; // ...  vector<int> v2(v);  vector<int> v3(v.begin(), v.end()); //v3 igual a v2 int data[] = { 2, 3,...
Vector vector<int> v; // ... vector<int> v2(v.rbegin()+(v.size()/2), v.rend()); vector<int> v; // ...  // Traverse all con...
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...
Vector vector< vector<int> > Matrix; // >> int N, M; // ...  vector< vector<int> > Matrix(N, vector<int>(M, -1)); vector<i...
Búsqueda en Vector vector<int> v;  for(int i = 1; i < 100; i++) {  v.push_back(i*i);  }  Vector<int> :: iterator it= find(...
Inserción en Vector vector<int> v; // ...  v.insert(1, 42); // Insert value 42 after the first   vector<int> v;  vector<in...
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&q...
Pair template<typename T1, typename T2> struct pair { T1 first; T2 second; }; pair<string, pair<int,int> > P; string s = P...
Set <ul><ul><ul><li>Agregar elementos </li></ul></ul></ul><ul><ul><ul><li>No permite duplicados </li></ul></ul></ul><ul><u...
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 ...
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...
Buscar y Borrar en Set set<int> s;  // ... set<int>::iterator it1, it2;  it1 = s.find(10);  it2 = s.find(100);  // Funcion...
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...
Algorithm <ul><li>Aproximadamente 60 algoritmos standard </li></ul><ul><ul><li>Búsqueda </li></ul></ul><ul><ul><li>Ordenam...
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...
Algorithm vector<int> X;  // ...  sort(X.begin(), X.end()); // orden ascendente sort(X.rbegin(), X.rend()); // orden desce...
String Streams void f(const string& s) { istringstream is(s);  vector<int> v;  int tmp;  while(is >> tmp) { v.push_back(tm...
String Streams string f(const vector<int>& v) {  ostringstream os;  for(vector<int>::iterator it=v.begin();it!=v.end();it+...
Links <ul><ul><li>http://uva.onlinejudge.org/ </li></ul></ul><ul><ul><li>http://uvatoolkit.com/problemssolve.php </li></ul...
Upcoming SlideShare
Loading in …5
×

STL : Standard Template Library

1,527 views

Published on

STL : Standard Template Library

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,527
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

STL : Standard Template Library

  1. 1. STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
  2. 2. Referencia <ul><ul><li>http://www.sgi.com/tech/stl/ </li></ul></ul><ul><ul><li>http://www.cppreference.com/wiki/stl/start </li></ul></ul><ul><ul><li>http://www.cplusplus.com/reference/stl/ </li></ul></ul>
  3. 3. Ventajas <ul><ul><li>Estandarizada </li></ul></ul><ul><ul><li>Eficiente </li></ul></ul><ul><ul><li>Pequeña, fácil de aprender </li></ul></ul><ul><ul><li>Flexible </li></ul></ul><ul><ul><li>Código abierto </li></ul></ul>
  4. 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. 5. Contenedores <ul><ul><li>Contienen elementos </li></ul></ul><ul><ul><li>Proveen iteradores que apuntan a sus elementos </li></ul></ul><ul><ul><li>Proveen un conjunto mínimo de operaciones mínimas para manipular sus elementos </li></ul></ul>
  6. 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. 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. 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. 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. 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. 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. 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. 13. Eliminación en Vector erase(iterator); erase(iterador inicial, iterador final);
  14. 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. 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. 16. Set <ul><ul><ul><li>Agregar elementos </li></ul></ul></ul><ul><ul><ul><li>No permite duplicados </li></ul></ul></ul><ul><ul><ul><li>Remover elementos </li></ul></ul></ul><ul><ul><ul><li>Número de elementos distintos </li></ul></ul></ul><ul><ul><ul><li>Verificar si un elemento está en el Set </li></ul></ul></ul>
  17. 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. 18. Set if(s.find(42) != s.end()) { // 42 presents in set } else { // 42 not presents in set }
  19. 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. 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. 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. 22. Algorithm <ul><li>Aproximadamente 60 algoritmos standard </li></ul><ul><ul><li>Búsqueda </li></ul></ul><ul><ul><li>Ordenamiento </li></ul></ul><ul><ul><li>Transformaciones </li></ul></ul><ul><ul><li>Numéricos </li></ul></ul><ul><li>La mayoría de las funciones toman la forma: </li></ul><ul><li>fn(e.begin(), e.end(), ...) </li></ul>
  23. 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. 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. 25. String Streams void f(const string& s) { istringstream is(s); vector<int> v; int tmp; while(is >> tmp) { v.push_back(tmp); } }
  26. 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; }
  27. 27. Links <ul><ul><li>http://uva.onlinejudge.org/ </li></ul></ul><ul><ul><li>http://uvatoolkit.com/problemssolve.php </li></ul></ul><ul><ul><li>http://www.topcoder.com/tc </li></ul></ul>

×