Colas de tareas en C++: Guía completa para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a las colas de tareas en C++



La cola de tareas (queue) es una de las estructuras de datos fundamentales en programación que funciona según el principio FIFO (First In, First Out): el primer elemento agregado será el primero en extraerse. Imagínese una cola normal en una tienda: el primer cliente es atendido primero. En C++, el trabajo con colas se implementa a través del contenedor std::queue, que forma parte de la Biblioteca de plantillas estándar (STL).



En este artículo, analizaremos en detalle cómo crear, llenar y procesar colas de tareas en C++. Aprenderá qué métodos están disponibles, cómo evitar errores típicos y cómo se aplican las colas en proyectos reales, desde sistemas multiproceso hasta procesamiento de solicitudes.



Operaciones básicas con colas de tareas



Creación e inicialización de una cola



Para usar una cola en C++, es necesario incluir el archivo de encabezado <queue>. Una cola básica se declara así:



#include <iostream>#include <queue>

int main() { std::queue<int> taskQueue; // Cola de números enteros return 0;}


Puede crear una cola para cualquier tipo de datos: cadenas, estructuras definidas por el usuario, punteros. Por ejemplo, una cola de tareas para procesar pedidos:



#include <queue>#include <string>

struct Order { int id; std::string description;};

int main() { std::queue<Order> orderQueue; return 0;}


Agregar y eliminar elementos



Los métodos principales para trabajar con la cola:



  • push() — agrega un elemento al final de la cola
  • pop() — elimina el primer elemento de la cola
  • front() — devuelve una referencia al primer elemento (sin eliminarlo)
  • back() — devuelve una referencia al último elemento
  • empty() — verifica si la cola está vacía
  • size() — devuelve la cantidad de elementos


Veamos un ejemplo con procesamiento paso a paso de tareas:



#include <iostream>#include <queue>

int main() { std::queue<std::string> tasks;

// Agregamos tareas tasks.push("Tarea 1: Revisar el correo"); tasks.push("Tarea 2: Escribir el informe"); tasks.push("Tarea 3: Realizar la reunión");

std::cout << "Primera tarea: " << tasks.front() << std::endl; std::cout << "Última tarea: " << tasks.back() << std::endl; std::cout << "Total de tareas: " << tasks.size() << std::endl;

// Procesamos las tareas en orden while (!tasks.empty()) { std::cout << "Ejecutando: " << tasks.front() << std::endl; tasks.pop(); // Eliminamos la tarea completada }

std::cout << "¡Todas las tareas completadas!" << std::endl; return 0;}


Resultado de la ejecución:

Primera tarea: Tarea 1: Revisar el correoÚltima tarea: Tarea 3: Realizar la reuniónTotal de tareas: 3Ejecutando: Tarea 1: Revisar el correoEjecutando: Tarea 2: Escribir el informeEjecutando: Tarea 3: Realizar la reunión¡Todas las tareas completadas!


Colas con prioridad: cuando el orden importa



A veces las tareas tienen diferente prioridad. Por ejemplo, un error crítico debe procesarse antes que una actualización planificada. En estos casos se utiliza std::priority_queue, que ordena automáticamente los elementos por prioridad.



#include <iostream>#include <queue>#include <vector>

int main() { // Por defecto — máxima prioridad para el elemento más grande std::priority_queue<int> highPriorityTasks;

highPriorityTasks.push(5); // Tarea normal highPriorityTasks.push(10); // Tarea urgente highPriorityTasks.push(1); // Baja prioridad

while (!highPri

Blogs

Book Recommendations