Filas de Tarefas em C++: Guia Completo para Iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução às Filas de Tarefas em C++



Fila de tarefas (queue) é uma das estruturas de dados fundamentais na programação, que funciona pelo princípio FIFO (First In, First Out): o primeiro elemento adicionado será o primeiro a ser removido. Imagine uma fila comum em uma loja — o primeiro cliente é atendido primeiro. Em C++, o trabalho com filas é implementado através do contêiner std::queue, que faz parte da Biblioteca Padrão de Modelos (STL).



Neste artigo, vamos detalhar como criar, preencher e processar filas de tarefas em C++. Você aprenderá quais métodos estão disponíveis, como evitar erros comuns e como as filas são aplicadas em projetos reais, desde sistemas multithread até processamento de requisições.



Operações Básicas com Filas de Tarefas



Criação e Inicialização da Fila



Para usar uma fila em C++, é necessário incluir o arquivo de cabeçalho <queue>. A fila básica é declarada assim:



#include <iostream>#include <queue>

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


Você pode criar uma fila para qualquer tipo de dado — strings, estruturas personalizadas, ponteiros. Por exemplo, uma fila de tarefas para processamento de pedidos:



#include <queue>#include <string>

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

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


Adicionar e Remover Elementos



Os principais métodos para trabalhar com a fila:



  • push() — adiciona um elemento ao final da fila
  • pop() — remove o primeiro elemento da fila
  • front() — retorna uma referência ao primeiro elemento (sem remover)
  • back() — retorna uma referência ao último elemento
  • empty() — verifica se a fila está vazia
  • size() — retorna o número de elementos


Vejamos um exemplo com processamento passo a passo de tarefas:



#include <iostream>#include <queue>

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

// Adicionando tarefas tasks.push("Tarefa 1: Verificar e-mail"); tasks.push("Tarefa 2: Escrever relatório"); tasks.push("Tarefa 3: Realizar reunião");

std::cout << "Primeira tarefa: " << tasks.front() << std::endl; std::cout << "Última tarefa: " << tasks.back() << std::endl; std::cout << "Total de tarefas: " << tasks.size() << std::endl;

// Processando as tarefas em ordem while (!tasks.empty()) { std::cout << "Executando: " << tasks.front() << std::endl; tasks.pop(); // Remove a tarefa concluída }

std::cout << "Todas as tarefas concluídas!" << std::endl; return 0;}


Resultado da execução:

Primeira tarefa: Tarefa 1: Verificar e-mailÚltima tarefa: Tarefa 3: Realizar reuniãoTotal de tarefas: 3Executando: Tarefa 1: Verificar e-mailExecutando: Tarefa 2: Escrever relatórioExecutando: Tarefa 3: Realizar reuniãoTodas as tarefas concluídas!


Filas de Prioridade: Quando a Ordem é Importante



Às vezes, as tarefas têm prioridades diferentes. Por exemplo, um erro crítico deve ser processado antes de uma atualização planejada. Nesses casos, usa-se std::priority_queue, que classifica automaticamente os elementos por prioridade.



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

int main() { // Por padrão — prioridade máxima para o maior elemento std::priority_queue<int> highPriorityTasks;

highPriorityTasks.push(5); // Tarefa normal highPriorityTasks.push(10); // Tarefa urgente highPriorityTasks.push(1); // Baixa prioridade

while (!highPri

Blogs

Book Recommendations