Capítulo 18: STL (Standard Template Library) 🎒⚔️
Neste capítulo, vamos aprender a usar as coleções de dados prontas e poderosas do C++ usando a STL, com o tema de Inventário de RPG (Zelda)!
📖 O que é a STL?
A Standard Template Library (Biblioteca de Templates Padrão) é um conjunto de ferramentas do C++ que fornece estruturas de dados prontas (como listas, filas, pilhas) e algoritmos (como busca e ordenação).
O mais famoso deles é o vector, que é um vetor que cresce de tamanho sozinho!
📖 Exemplo Guiado: O Baú de Itens do Link
Vamos usar o std::vector para criar um inventário onde podemos adicionar quantos itens quisermos, sem precisar definir o tamanho máximo antes!
- Crie o arquivo
inventario_zelda.cppna pastasrc/:
#include <iostream>
#include <vector> // Biblioteca do Vector
#include <string>
using namespace std;
int main() {
// Criando um vetor dinâmico de strings
vector<string> inventario;
// Adicionando itens usando push_back
inventario.push_back("Espada Mestra");
inventario.push_back("Escudo Hylian");
inventario.push_back("Arco");
cout << "--- Seu Inventario ---" << endl;
// Percorrendo o vector
for (int i = 0; i < inventario.size(); i++) {
cout << i + 1 << ". " << inventario[i] << endl;
}
// Removendo o último item
cout << endl << "Voce usou o Arco!" << endl;
inventario.pop_back();
cout << endl << "--- Inventario Atualizado ---" << endl;
for (string item : inventario) { // For moderno do C++!
cout << "- " << item << endl;
}
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
g++ inventario_zelda.cpp -o inventario_zelda - Execute:
./inventario_zelda
Resultado Esperado:
--- Seu Inventario ---
1. Espada Mestra
2. Escudo Hylian
3. Arco
Voce usou o Arco!
--- Inventario Atualizado ---
- Espada Mestra
- Escudo Hylian📊 Ilustração Visual: Funcionamento do Vector
O vector cresce automaticamente conforme você adiciona elementos!
graph LR A["[Espada]"] --> B["[Espada] [Escudo]"] B --> C["[Espada] [Escudo] [Arco]"]
🛠️ Prática Obrigatória 1: Lista de Pokémons Capturados
Crie um programa chamado pokedex_vector.cpp que use um vector de strings para armazenar os nomes dos Pokémons que o usuário capturou. Use um laço while para perguntar nomes de Pokémons até que o usuário digite “sair”. No final, exiba a lista completa!
🔑 Gabarito de Código
Prática 1: pokedex_vector.cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<string> pokedex;
string nome;
while (true) {
cout << "Digite o nome do Pokemon capturado (ou 'sair'): ";
cin >> nome;
if (nome == "sair") {
break;
}
pokedex.push_back(nome);
}
cout << endl << "--- Sua Pokedex ---" << endl;
for (string p : pokedex) {
cout << "- " << p << endl;
}
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)