SlideShare ist ein Scribd-Unternehmen logo
1 von 27
STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
Referencia ,[object Object],[object Object],[object Object]
Ventajas ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt? (13)

Alocação Dinâmica em C
Alocação Dinâmica em CAlocação Dinâmica em C
Alocação Dinâmica em C
 
Cpro
CproCpro
Cpro
 
Ejercicio8
Ejercicio8Ejercicio8
Ejercicio8
 
Vcs6
Vcs6Vcs6
Vcs6
 
Union
UnionUnion
Union
 
Pruebabfs
PruebabfsPruebabfs
Pruebabfs
 
Practica 10
Practica 10Practica 10
Practica 10
 
vecotores programacion
vecotores programacionvecotores programacion
vecotores programacion
 
Sbaw090630
Sbaw090630Sbaw090630
Sbaw090630
 
B.f.s
B.f.sB.f.s
B.f.s
 
Cómo crear una calculadora js jv-ng
Cómo crear una calculadora js jv-ngCómo crear una calculadora js jv-ng
Cómo crear una calculadora js jv-ng
 
Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2
 
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
 

Andere mochten auch

Andere mochten auch (11)

Stl elemeentos de la ecologia.
Stl elemeentos de la ecologia.Stl elemeentos de la ecologia.
Stl elemeentos de la ecologia.
 
STL,EDM,CNC,Troqueles
STL,EDM,CNC,TroquelesSTL,EDM,CNC,Troqueles
STL,EDM,CNC,Troqueles
 
Electric Discharge machining
Electric Discharge machiningElectric Discharge machining
Electric Discharge machining
 
Plasticos
PlasticosPlasticos
Plasticos
 
Los polimeros y sus aleaciones
Los polimeros y sus aleacionesLos polimeros y sus aleaciones
Los polimeros y sus aleaciones
 
Cnc, Cad, Cam, Cae, Capp
Cnc, Cad, Cam, Cae, CappCnc, Cad, Cam, Cae, Capp
Cnc, Cad, Cam, Cae, Capp
 
SISTEMAS CAD CAM CAE Y CNC
SISTEMAS CAD CAM CAE Y CNC SISTEMAS CAD CAM CAE Y CNC
SISTEMAS CAD CAM CAE Y CNC
 
Cad,Cam,Cae,Capp,Caqa
Cad,Cam,Cae,Capp,CaqaCad,Cam,Cae,Capp,Caqa
Cad,Cam,Cae,Capp,Caqa
 
tipos de plasticos
tipos de plasticostipos de plasticos
tipos de plasticos
 
Edm
EdmEdm
Edm
 
CAD/CAM/CAE/CNC
CAD/CAM/CAE/CNCCAD/CAM/CAE/CNC
CAD/CAM/CAE/CNC
 

Mehr von ovruni

Cv claudiat
Cv claudiatCv claudiat
Cv claudiatovruni
 
Pt erick g
Pt erick gPt erick g
Pt erick govruni
 
Pt claudia t
Pt claudia tPt claudia t
Pt claudia tovruni
 
Pt Raul C
Pt Raul CPt Raul C
Pt Raul Covruni
 
P Raul C
P Raul CP Raul C
P Raul Covruni
 
P Erika T
P Erika TP Erika T
P Erika Tovruni
 
Pt Erika T
Pt Erika TPt Erika T
Pt Erika Tovruni
 
Software Libre y GNU/Linux
Software Libre y GNU/LinuxSoftware Libre y GNU/Linux
Software Libre y GNU/Linuxovruni
 
Umbrello UML Modeller
Umbrello UML ModellerUmbrello UML Modeller
Umbrello UML Modellerovruni
 
Presentación de la propuestas de la Lista Q
Presentación de la propuestas de la Lista QPresentación de la propuestas de la Lista Q
Presentación de la propuestas de la Lista Qovruni
 
Presentación de la propuestas de la Lista P
Presentación de la propuestas de la Lista PPresentación de la propuestas de la Lista P
Presentación de la propuestas de la Lista Povruni
 
Pt Patricia P
Pt Patricia PPt Patricia P
Pt Patricia Povruni
 
Pt Alexander A
Pt Alexander APt Alexander A
Pt Alexander Aovruni
 
Pt Valentina Q
Pt Valentina QPt Valentina Q
Pt Valentina Qovruni
 
Pt Eleazar A
Pt Eleazar APt Eleazar A
Pt Eleazar Aovruni
 
Cv Eleazar A
Cv Eleazar ACv Eleazar A
Cv Eleazar Aovruni
 
Google_Code_Jam_MgErnestoBringas
Google_Code_Jam_MgErnestoBringasGoogle_Code_Jam_MgErnestoBringas
Google_Code_Jam_MgErnestoBringasovruni
 
GoogleCodeJam11072008
GoogleCodeJam11072008GoogleCodeJam11072008
GoogleCodeJam11072008ovruni
 
GCJ08_RoyPalacios
GCJ08_RoyPalaciosGCJ08_RoyPalacios
GCJ08_RoyPalaciosovruni
 

Mehr von ovruni (20)

Cv claudiat
Cv claudiatCv claudiat
Cv claudiat
 
Pt erick g
Pt erick gPt erick g
Pt erick g
 
Pt claudia t
Pt claudia tPt claudia t
Pt claudia t
 
Pt Raul C
Pt Raul CPt Raul C
Pt Raul C
 
P Raul C
P Raul CP Raul C
P Raul C
 
P Erika T
P Erika TP Erika T
P Erika T
 
Pt Erika T
Pt Erika TPt Erika T
Pt Erika T
 
Software Libre y GNU/Linux
Software Libre y GNU/LinuxSoftware Libre y GNU/Linux
Software Libre y GNU/Linux
 
OLPC
OLPCOLPC
OLPC
 
Umbrello UML Modeller
Umbrello UML ModellerUmbrello UML Modeller
Umbrello UML Modeller
 
Presentación de la propuestas de la Lista Q
Presentación de la propuestas de la Lista QPresentación de la propuestas de la Lista Q
Presentación de la propuestas de la Lista Q
 
Presentación de la propuestas de la Lista P
Presentación de la propuestas de la Lista PPresentación de la propuestas de la Lista P
Presentación de la propuestas de la Lista P
 
Pt Patricia P
Pt Patricia PPt Patricia P
Pt Patricia P
 
Pt Alexander A
Pt Alexander APt Alexander A
Pt Alexander A
 
Pt Valentina Q
Pt Valentina QPt Valentina Q
Pt Valentina Q
 
Pt Eleazar A
Pt Eleazar APt Eleazar A
Pt Eleazar A
 
Cv Eleazar A
Cv Eleazar ACv Eleazar A
Cv Eleazar A
 
Google_Code_Jam_MgErnestoBringas
Google_Code_Jam_MgErnestoBringasGoogle_Code_Jam_MgErnestoBringas
Google_Code_Jam_MgErnestoBringas
 
GoogleCodeJam11072008
GoogleCodeJam11072008GoogleCodeJam11072008
GoogleCodeJam11072008
 
GCJ08_RoyPalacios
GCJ08_RoyPalaciosGCJ08_RoyPalacios
GCJ08_RoyPalacios
 

STL : Standard Template Library

  • 1. STL : Standard Template Library Mario Ynocente Castro UNI-FIIS
  • 2.
  • 3.
  • 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.
  • 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.
  • 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.
  • 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; }
  • 27.