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!


Vamos usar o std::vector para criar um inventário onde podemos adicionar quantos itens quisermos, sem precisar definir o tamanho máximo antes!

  1. Crie o arquivo inventario_zelda.cpp na pasta src/:
#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

  1. Abra o terminal integrado.
  2. Compile: g++ inventario_zelda.cpp -o inventario_zelda
  3. 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)


Capitulo Anterior | Proximo Capitulo