Biblioteca Padrão C++: visão geral completa
A Biblioteca Padrão C++ (C++ Standard Library) é um conjunto poderoso de classes, funções, macros e templates que acompanha qualquer compilador C++. Ela fornece soluções prontas para a maioria das tarefas típicas: desde o trabalho com contêineres de dados até comunicação em rede e multithreading. Neste artigo, vamos analisar os principais componentes da biblioteca, mostrar exemplos de código e explicar como usar seus recursos de forma eficiente.
Principais componentes da biblioteca padrão
A biblioteca padrão é dividida em várias seções principais:
- STL (Standard Template Library) — contêineres, iteradores, algoritmos e objetos funcionais.
- Entrada/Saída — fluxos (
iostream), fluxos de arquivo (fstream), fluxos de string (sstream). - Strings — classes
std::stringestd::string_view. - Operações numéricas — funções matemáticas (
cmath), números aleatórios (random), números complexos (complex). - Multithreading — threads (
thread), mutexes, variáveis de condição. - Utilitários —
std::optional,std::variant,std::any, ponteiros inteligentes (shared_ptr,unique_ptr).
Contêineres STL
Contêineres são classes template projetadas para armazenar coleções de objetos. Eles são divididos em sequenciais e associativos.
Contêineres sequenciais
std::vector— array dinâmico. Acesso rápido por índice, inserção lenta no meio.std::deque— fila dupla. Inserção/remoção rápida em ambas as extremidades.std::list— lista duplamente encadeada. Inserção/remoção rápida em qualquer lugar, mas acesso lento por índice.
#include <iostream>#include <vector>
int main() { std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // Adicionar ao final for (int n : numbers) { std::cout << n << " "; } return 0;}Contêineres associativos
std::set— conjunto de elementos únicos (ordenado).std::map— dicionário "chave-valor" (ordenado por chave).std::unordered_set/std::unordered_map— tabelas hash (não ordenadas, mas mais rápidas).
#include <iostream>#include <map>
int main() { std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25; for (const auto& [name, age] : ages) { std::cout << name << ": " << age << std::endl; } return 0;}Algoritmos
A biblioteca <algorithm> contém mais de 100 algoritmos para trabalhar com sequências: ordenação, busca, cópia, transformação, etc. Todos os algoritmos funcionam através de iteradores, tornando-os universais.
#include <iostream>#include <algorithm>#include <vector>
int main() { std::vector<int> v = {5, 2, 8, 1, 9}; std::sort(v.begin(), v.end()); // Ordenação crescente auto it = std::find(v.begin(), v.end(), 8); if (it != v.end()) { std::cout << "Encontrado: " << *it << std::endl; } return 0;}Trabalhando com strings
A classe std::string fornece métodos convenientes para trabalhar com texto: busca, substituição, concatenação, comparação. Em C++17, foi adicionado std::string_view para visualização não proprietária de strings.
#include Também na biblioteca
Aprendizado de Máquina em C++: Visão Geral de Bibliotecas e Ferramentas
Criptografia em Rust com a biblioteca RustCrypto
Cliente Redis para Node.js: ioredis — uma ferramenta poderosa para trabalhar com Redis
Trabalhando com XML em JavaScript (Node.js): bibliotecas e exemplos