Aula 13 - STL ⚙️
O que é a STL?
- Standard Template Library.
- Conjunto de ferramentas prontas e altamente otimizadas.
Os 3 Pilares da STL
- Containers: Guardam os dados (vector, map, list).
- Algoritmos: Processam os dados (sort, find, count).
- Iteradores: Fazem a ponte entre ambos.
Containers Sequenciais
std::vector: Array dinâmico (O mais comum).
std::list: Lista duplamente ligada.
std::deque: Fila de duas extremidades.
Containers Associativos
std::map: Chave-Valor ordenado.
std::set: Conjunto de valores únicos e ordenados.
std::unordered_map: Tabela Hash (Muito rápido).
Por que usar std::vector?
- Acesso rápido (O(1)).
- Cache-friendly (dados contíguos).
- Gerencia a memória sozinho.
Métodos Essenciais do Vector
push_back() / emplace_back()
size() / capacity()
at() (acesso com checagem de erro)
O container std::map
map<int, string> usuarios;
usuarios[1] = "Ricardo";
- Busca por chave em O(log n).
Iteradores: Aponte para o Sucesso
- Agem como ponteiros genéricos.
v.begin(): Primeiro elemento.
v.end(): Depois do último elemento.
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it;
}
Algoritmos Genéricos (#include )
- Funcionam com qualquer container da STL.
std::sort()
std::find()
std::count()
Lambda Functions e Algoritmos
- Personalize buscas e ordenações na hora!
sort(v.begin(), v.end(), [](int a, int b) {
return a > b; // Ordem decrescente
});
Templates: A Mágica por trás
- Permitem escrever código que funciona com qualquer tipo.
template <typename T>
T maior(T a, T b) { return (a > b) ? a : b; }
Template de Classe
template <class T>
class Caixa { T item; };
Complexidade Algorítmica (Notação Big-O)
- STL é desenhada para garantir limites de performance.
Stack (Pilha) e Queue (Fila)
- Adaptadores de containers que restringem o acesso (LIFO / FIFO).
- Reallocations são custosas. Use
reserve() em vectors se souber o tamanho.
Modern C++: as funções std::all_of, std::any_of
- Verificam condições em coleções inteiras em uma linha.
Namespaces
- Quase tudo na STL está dentro do
std::.
- Evite
using namespace std; em projetos grandes e headers.
- Em 99% dos casos, a STL é mais rápida que sua própria implementação.
Benefícios da STL
- Segurança.
- Padronização (qualquer programador C++ entende).
- Portabilidade.
Resumo da Aula
- Comece sempre pelo
std::vector.
- Use
std::map para cadastros.
- Explore a bibioteca
algorithm.
Fim da Aula 13
- Próxima aula: Gerenciamento de Memória (Smart Pointers)!