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();
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);
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());
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 }
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["Top"] = 1; M["Coder"] = 2; M["SRM"] = 10; int x = M["Top"] + M["Coder"]; if(M.find("SRM") != M.end()) { M.erase(M.find("SRM")); // or even M.erase("SRM") }
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));