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)
							 |