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