Biblioteca Padrão C++: visão geral completa dos recursos

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

Biblioteca Padrão C++ (STL): visão geral completa



A Biblioteca Padrão C++ (frequentemente chamada de STL — Standard Template Library) é um poderoso conjunto de classes e funções template que é parte integrante de qualquer compilador C++. Ela fornece ao desenvolvedor soluções prontas, testadas e altamente eficientes para a maioria das tarefas cotidianas: desde o trabalho com coleções de dados até algoritmos complexos e entrada-saída. O estudo da STL é um passo fundamental no aprendizado do C++ moderno.



Neste artigo, analisaremos detalhadamente os principais componentes da biblioteca padrão, sua finalidade e forneceremos exemplos práticos de uso.



1. Contêineres (Containers)



Contêineres são estruturas de dados projetadas para armazenar coleções de objetos. Todos os contêineres são classes template, permitindo armazenar elementos de qualquer tipo.



  • Contêineres sequenciais: armazenam elementos em ordem linear.
    • std::vector — array dinâmico. Acesso rápido por índice, inserção/remoção no final — O(1), no meio — O(n).
    • std::list — lista duplamente encadeada. Inserção/remoção rápida em qualquer lugar, mas sem acesso direto por índice.
    • std::deque — fila dupla. Inserção/remoção rápida tanto no início quanto no final.
    • std::array — array estático de tamanho fixo (C++11).
  • Contêineres associativos: armazenam elementos em ordem classificada (geralmente com base em árvores rubro-negras).
    • std::set — conjunto de elementos únicos.
    • std::map — dicionário (array associativo) de pares "chave-valor".
    • std::multiset / std::multimap — análogos que permitem duplicatas.
  • Contêineres associativos não ordenados (C++11): usam tabelas hash.
    • std::unordered_set, std::unordered_map — acesso rápido em média O(1).
  • Adaptadores de contêiner: fornecem uma interface limitada com base em outro contêiner.
    • std::stack (LIFO), std::queue (FIFO), std::priority_queue (com prioridade).


Exemplo de uso de std::vector:

#include <iostream>#include <vector>

int main() { std::vector<int> numbers = {10, 20, 30, 40, 50}; numbers.push_back(60); // Adiciona elemento ao final for (int n : numbers) { std::cout << n << " "; } // Saída: 10 20 30 40 50 60 return 0;}


2. Iteradores (Iterators)



Iteradores são ponteiros generalizados que permitem percorrer elementos de qualquer contêiner de maneira uniforme. Eles são o elo de ligação entre contêineres e algoritmos.



  • Categorias de iteradores: Input, Output, Forward, Bidirectional, Random Access.
  • begin() / end() — retornam iteradores para o primeiro e o último+1 elemento.
  • std::advance() — move o iterador N posições.
  • std::distance() — calcula a distância entre dois iteradores.


Exemplo com iteradores:

#include <iostream>#include <vector>

int main() { std::vector<std::string> words = {"Hello", "World", "C++"}; for (auto it = words.begin(); it != words.end(); ++it) { std::cout << *it << " "; } // Saída: Hello World C++ return 0;}


3. Algoritmos (

Recommendations