7 Stl Y Los Contenedores Basicos 3 Parte

1,828 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,828
On SlideShare
0
From Embeds
0
Number of Embeds
596
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

7 Stl Y Los Contenedores Basicos 3 Parte

  1. 1. 2.3 STL y los Contenedores Básicos 3a parte
  2. 2. Cómo Usar el Contenedor deque de STL
  3. 3. Interfaz • Un objeto de tipo deque (pronunciado quot;deckquot;) puede almacenar y brindar acceso a una secuencia linear de elementos. • En este aspecto, un deque es similar a un vector; las dos clases comparten interfases de clase muy similares Mtl. Lourdes Cahuich 3
  4. 4. #include <cstdlib> #include <iostream> #include <vector> #include <deque> using namespace std; int main(int argc, char* argv[]) { vector<int> v(10, 1); deque<int> d(10, 1); v[9] = 2; d[9] = 2; cout << v.front() << quot; quot; << v.back() << endl; cout << d.front() << quot; quot; << d.back() << endl; v.push_back(3); d.push_back(3); v.pop_back(); d.pop_back(); cout << v.size() << endl; cout << d.size() << endl; ostream_iterator<int> out(cout, quot; quot;); copy(v.begin(), v.end(), out); copy(d.begin(), d.end(), out); return EXIT_SUCCESS; } Mtl. Lourdes Cahuich 4
  5. 5. Deques y vectores • Ambas clases poseen constructores, métodos de acceso de elementos, métodos de inserción y eliminación y soporte de iteradores, muy similares. • Los deques y vectores difieren, en su capacidad de manejar inserciones y eliminaciones de elementos del frente de sus respectivas estructuras Mtl. Lourdes Cahuich 5
  6. 6. Deques y vectores • deben usar las funciones de la clase miembro vector, insert y erase. • Estas funciones sobrecargan el elemento de copiado. • La clase deque, por otro lado, provee los métodos push_front and pop_front. Mtl. Lourdes Cahuich 6
  7. 7. Deques y vectores • Estos métodos no sobrecargan el elemento de copiado. Mtl. Lourdes Cahuich 7
  8. 8. deque<int> d(10); // 10 elements, initialized to 0 d.push_front(2); cout << d.front() << endl; // Outputs quot;2quot; d.pop_front(); cout << d.front() << endl; // Outputs quot;0quot; Mtl. Lourdes Cahuich 8
  9. 9. Deques y vectores • La función count acepta un rango de elementos en un contenedor (a través de un iterador de inicio y fin) y un valor para contar. • La función regresa el número de ocurrencias del valor dentro del rango especificado. Mtl. Lourdes Cahuich 9
  10. 10. Deques y vectores • La función count_if usa una función provista por el programador para determinar si es contado un elemento del rango especificado Mtl. Lourdes Cahuich 10
  11. 11. // a predicate bool is_odd(int i) { return ((i % 2) == 1); } int main(int argc, char* argv[]) { deque<int> numbers; for (int i = 0; i < 20; i++) { numbers.push_back(i); } cout << count(numbers.begin(), numbers.end(), 10) << endl; cout << count_if(numbers.begin(), numbers.end(), is_odd) << endl; return EXIT_SUCCESS; } Mtl. Lourdes Cahuich 11
  12. 12. Deques y vectores • Para acomodar eficientemente inserciones y eliminaciones de elementos del frente y detrás, una implantación deque se basa típicamente en una serie de arreglos Mtl. Lourdes Cahuich 12
  13. 13. Deques y vectores • Comparando las estrategias de almacenamiento de elementos entre los dos contenedores es suficiente para ilustrar la principal diferencia entre los deques y los vectores. Mtl. Lourdes Cahuich 13
  14. 14. Almacenamiento en deques y vectores • La figura representa la forma en que los elementos se almacenan en un vector • En esta figura, sombreamos los cuadros que representan los elementos del vector (el tamaño) y los cuadros que no están sombreados representan la memoria reservada (la capacidad). Mtl. Lourdes Cahuich 14
  15. 15. Almacenamiento en deques y vectores • En este arreglo, insertar un elemento al inicio del vector no es una tarea trivial debido a que se requiere mover todos los elementos para hacer espacio para el nuevo elemento que se va a insertar. Mtl. Lourdes Cahuich 15
  16. 16. Almacenamiento en deques y vectores •Los deques reservan espacios de memoria al frente y detrás de sus elementos almacenados. •La figura ilustra esta diferencia fundamental entre los vectores y deques. Mtl. Lourdes Cahuich 16

×