197 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: queue
 | |
| localeTitle: cola
 | |
| ---
 | |
| ## Colas
 | |
| 
 | |
| `queue` es uno de los contenedores más utilizados en C ++. Un contenedor es una estructura de datos que almacena una colección de objetos, algunos en orden, otros no. Todos los contenedores tienen un conjunto diferente de funciones que le permiten acceder a un objeto (s) en esa colección.
 | |
| 
 | |
| `std::queue` es parte de la biblioteca estándar de C ++ (de ahí el prefijo `std::` y le permite almacenar datos en el orden First In First Out (FIFO). NOTA: **Todos los objetos dentro de una cola deben ser del mismo tipo de datos**
 | |
| 
 | |
| El tipo de datos que almacena dentro de una cola va entre paréntesis angulares junto a la palabra clave de la cola. Por ejemplo, si desea almacenar una colección de enteros, la cola sería `std::queue<int> queue_name`
 | |
| 
 | |
| ### Explicación de cola LIFO
 | |
| 
 | |
| `queue` nos permite empujar / poner en cola y hacer pop / sacar de la cola en un orden específico. **Empujar** significa insertar un objeto en la parte delantera de la cola. **Pop** significa sacar el objeto "más antiguo" del final de la cola. Así que cuando lo presionas está en la parte delantera y cuando haces pop extraes el elemento más antiguo.
 | |
| 
 | |
| 
 | |
| 
 | |
| ### Operaciones de cola
 | |
| 
 | |
| El contenedor de cola soporta las siguientes operaciones:
 | |
| 
 | |
| *   empujar (poner en cola)
 | |
| *   pop (dequeue)
 | |
| *   vacío
 | |
| *   tamaño
 | |
| *   frente
 | |
| *   espalda
 | |
| 
 | |
| #### empujar
 | |
| 
 | |
| Le permite insertar un nuevo elemento al final de la cola, después de su último elemento actual.
 | |
| 
 | |
| ```cpp
 | |
| //Push operation in Queue 
 | |
|  #include <iostream>       // std::cout 
 | |
|  #include <queue>          // std::queue 
 | |
|  
 | |
|  int main () 
 | |
|  { 
 | |
|   std::queue<int> q; 
 | |
|  
 | |
|   q.push(1);    //Pushing 1 at front of the queue 
 | |
|   q.push(2);    //Pushing 2 at front of the queue 
 | |
|  
 | |
|   return 0; 
 | |
|  } 
 | |
| ```
 | |
| 
 | |
| #### Frente
 | |
| 
 | |
| Le permite acceder al siguiente elemento en la cola sin eliminarlo. El siguiente elemento es el elemento "más antiguo" en la cola.
 | |
| 
 | |
| ```cpp
 | |
| //Front operation in Queue 
 | |
|  #include <iostream>       // std::cout 
 | |
|  #include <queue>          // std::queue 
 | |
|  
 | |
|  int main () 
 | |
|  { 
 | |
|   std::queue<int> q; 
 | |
|  
 | |
|   q.push(1);    //Pushing 1 at front of the queue 
 | |
|   q.push(2);    //Pushing 2 at front of the queue 
 | |
|  
 | |
|   std::cout<<q.front()<<'\n';     //Accessing the front of the queue 
 | |
|   std::cout<<q.front()<<'\n';     //Accessing the front of the queue 
 | |
|  
 | |
|   return 0; 
 | |
|  } 
 | |
| ```
 | |
| 
 | |
| ```
 | |
| Output: 
 | |
|  1 
 | |
|  1 
 | |
| ```
 | |
| 
 | |
| #### Popular
 | |
| 
 | |
| Le permite eliminar el siguiente elemento en la cola, reduciendo efectivamente su tamaño en uno. El elemento eliminado es el elemento "más antiguo".
 | |
| 
 | |
| ```cpp
 | |
| //Pop operation in Queue 
 | |
|  #include <iostream>       // std::cout 
 | |
|  #include <queue>          // std::queue 
 | |
|  
 | |
|  int main () 
 | |
|  { 
 | |
|   std::queue<int> q; 
 | |
|  
 | |
|   q.push(1);    //Pushing 1 at front of the queue 
 | |
|   q.push(2);    //Pushing 2 at front of the queue 
 | |
|  
 | |
|   std::cout<<q.front()<<'\n';     //Accessing the front of the queue 
 | |
|   q.pop();                        //Removing the oldest element 
 | |
|   std::cout<<q.front()<<'\n';     //Accessing the front of the queue 
 | |
|   q.pop();                        //Removing the oldest element 
 | |
|  
 | |
|   return 0; 
 | |
|  } 
 | |
| ```
 | |
| 
 | |
| ```
 | |
| Output: 
 | |
|  1 
 | |
|  2 
 | |
| ```
 | |
| 
 | |
| #### tamaño
 | |
| 
 | |
| Devuelve el número de elementos en la `queue` .
 | |
| 
 | |
| ```cpp
 | |
| //Size operation in Queue 
 | |
|  #include <iostream>       // std::cout 
 | |
|  #include <queue>          // std::queue 
 | |
|  
 | |
|  int main () 
 | |
|  { 
 | |
|   std::queue<int> q; 
 | |
|  
 | |
|   q.push(1);    //Pushing 1 at front of the queue 
 | |
|   q.push(2);    //Pushing 2 at front of the queue 
 | |
|  
 | |
|   std::cout<<q.size()<<'\n';     //Accessing the front of the queue 
 | |
|   q.pop();                        //Removing the oldest element 
 | |
|   std::cout<<q.size()<<'\n';     //Accessing the front of the queue 
 | |
|   q.pop();                        //Removing the oldest element 
 | |
|   std::cout<<q.size()<<'\n';     //Accessing the front of the queue 
 | |
|  
 | |
|   return 0; 
 | |
|  } 
 | |
| ```
 | |
| 
 | |
| ```
 | |
| Output: 
 | |
|  2 
 | |
|  1 
 | |
|  0 
 | |
| ```
 | |
| 
 | |
| #### Vacío
 | |
| 
 | |
| Devuelve si la `queue` está vacía, es decir, si el tamaño de la cola es cero. Devuelve `true` si el tamaño de la cola 0, si no, devuelve `false`
 | |
| 
 | |
| \`\` \`cpp // operación vacía en la cola
 | |
| 
 | |
| # incluir // std :: cout
 | |
| 
 | |
| # incluir // std :: stack
 | |
| 
 | |
| int main () { std :: queue q;
 | |
| 
 | |
| q.push (1); q.push (2);
 | |
| 
 | |
| while (q.empty ()! = true) { std :: cout << q.front () << '\\ n'; q.pop (); }
 | |
| 
 | |
| std :: cout << "Out of loop" << '\\ n'; devuelve 0; }
 | |
| ```
 | |
|     Output: 
 | |
|     1 
 | |
|     2 
 | |
|     Out of loop 
 | |
|  
 | |
|  #### Back 
 | |
|  
 | |
|  Allows you to access the last element in the queue without removing it. 
 | |
|  The next element is the "newest" element in the queue. 
 | |
| ```
 | |
| 
 | |
| cpp // Operación trasera en cola
 | |
| 
 | |
| # incluir // std :: cout
 | |
| 
 | |
| # incluir // std :: queue
 | |
| 
 | |
| int main () { std :: queue q;
 | |
| 
 | |
| q.push (1); // Empujando 1 al frente de la cola q.push (2); // Empujando 2 al frente de la cola
 | |
| 
 | |
| std :: cout << q.back () << '\\ n'; // Accediendo al dorso de la cola std :: cout << q.back () << '\\ n'; // Accediendo al dorso de la cola
 | |
| 
 | |
| devuelve 0; } \`\` \`
 | |
| ```
 | |
| Output: 
 | |
|  2 
 | |
|  2 
 | |
| ```
 | |
| 
 | |
| ### Para más recursos:
 | |
| 
 | |
| http://www.cplusplus.com/reference/queue/queue/
 | |
| 
 | |
| ### Citaciones:
 | |
| 
 | |
| Cortesía de imagen: https://en.wikipedia.org/wiki/FIFO _(computación y_ electrónica) |