Biblioteca Padrão C++: visão geral completa
A Biblioteca Padrão C++ (frequentemente chamada de STL — Standard Template Library) é um poderoso conjunto de classes e funções de template que faz parte de qualquer compilador C++. Ela fornece soluções prontas, testadas e otimizadas para as tarefas de programação mais comuns: desde trabalhar com arrays dinâmicos e strings até algoritmos complexos de ordenação e busca. O uso da biblioteca padrão acelera significativamente o desenvolvimento, aumenta a confiabilidade do código e facilita sua manutenção.
Neste artigo, detalharemos os principais componentes da biblioteca padrão C++: containers, algoritmos, iterators, strings, streams de entrada/saída e smart pointers. Cada seção será acompanhada de exemplos práticos de código.
Containers
Containers são classes projetadas para armazenar e organizar conjuntos de dados. Eles são divididos em três categorias principais:
- Containers sequenciais: armazenam elementos em ordem linear. Principais representantes:
std::vector(array dinâmico),std::list(lista duplamente encadeada),std::deque(fila dupla). - Containers associativos: armazenam elementos de forma ordenada, garantindo busca rápida. Exemplos:
std::set(conjunto),std::map(dicionário "chave-valor"). - Containers associativos não ordenados (C++11): usam hash tables para acesso ainda mais rápido. Exemplos:
std::unordered_set,std::unordered_map.
Exemplo de trabalho com std::vector e std::map:
#include <iostream>#include <vector>#include <map>#include <string>
int main() { // Container sequencial std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // Adicionar ao final
std::cout << "Vetor: "; for (int n : numbers) { std::cout << n << " "; } std::cout << std::endl;
// Container associativo std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25;
std::cout << "Idade de Alice: " << ages["Alice"] << std::endl; return 0;}Iterators
Iterators são uma forma generalizada de acessar elementos de um container. Eles funcionam como "smart pointers" e permitem percorrer qualquer container de maneira uniforme. Os principais tipos de iterators são: begin() (ponteiro para o primeiro elemento) e end() (ponteiro para o elemento após o último).
Exemplo de uso de iterator para percorrer um std::list:
#include <iostream>#include <list>
int main() { std::list<double> prices = {19.99, 29.99, 9.99};
// Uso de iterator for (auto it = prices.begin(); it != prices.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0;}Algorithms
A biblioteca <algorithm> contém dezenas de funções prontas para trabalhar com sequências de dados: ordenação, busca, cópia, transformação e muito mais. Os algoritmos trabalham com iterators, o que os torna universais.
Algoritmos populares:
std::sort— ordenação de um intervalo.std::find— busca pela primeira ocorrência de um valor.std::copy— cópia de elementos.std::accumulate— soma de elementos (de<numeric>).
Exemplo de ordenação e busca:
#include <iostream>#include <vector>#include <algorithm>
int main() { std::vector<int> data = {5, 2, 8, 1, 9 Também na biblioteca
ORM para Kotlin: comparação entre Exposed, Room e Ktorm com exemplos
Criação de ferramentas CLI em Node.js: visão geral dos frameworks Commander, Yargs e Inquirer
Processamento JSON em Kotlin: bibliotecas e exemplos de uso
WireMock.Net para C# (.NET): guia completo com exemplos