Ficha 01 · C++ moderno fundamentos
Exercício 1 · auto e range-for
Cria um vector<int> com 10 números. Usa auto em todo o lado possível e range-based for para imprimir, dobrar e somar.
Resposta:
Exercício 2 · Function template
Cria função template T menor(T a, T b) que retorna o menor de dois valores. Testa com int, double e string.
Resposta:
Exercício 3 · Class template Pilha
Cria classe template Pilha<T> com métodos push(T), pop(), top(), size(), empty(). Usa vector<T> internamente. Testa com int e string.
Resposta:
Exercício 4 · STL sort + lambda
Cria vector<pair<string, int>> com 5 (nome, idade). Ordena de duas formas usando lambdas:
1. Por nome (alfabético).
2. Por idade (decrescente).
Resposta:
Exercício 5 · Map e algoritmos
Conta a frequência de palavras numa frase usando map<string, int>. Imprime ordenado por frequência (decrescente).
Resposta:
Exercício 6 · Filter + transform com STL
Dado vector<int> nums{1..20}, usa STL para:
1. Filtrar apenas pares.
2. Elevar ao quadrado.
3. Somar tudo.
Faz sem range-based for — usa copy_if, transform, accumulate.
Resposta:
Exercício 7 · unique_ptr
Cria classe Pessoa com construtor que imprime "Criada" e destructor que imprime "Destruída". Demonstra que unique_ptr apaga automaticamente. Tenta copiar e mostra que dá erro de compilação. Depois usa move.
Resposta:
Exercício 8 · shared_ptr com lista
Cria vector<shared_ptr<Pessoa>> com 3 pessoas. Faz uma cópia do vector e verifica que use_count() é 2 para cada uma. Liberta o segundo vector e mostra que voltam a 1.
Resposta: