Pular para conteúdo

Aula 06 - Arrays e Strings 🧵


O que é um Array (Vetor)?

  • Uma coleção de elementos do mesmo tipo.
  • Armazenados de forma contígua (vizinhos) na memória.

Declaração e Acesso

int notas[5]; // Array de 5 inteiros
notas[0] = 10; // Primeiro elemento
- Lembre-se: C++ começa a contar no zero.


Inicialização

int lista[] = {10, 20, 30}; // Tamanho automático
int zeros[10] = {0};        // Tudo zerado

Perigos do Array Nativo

  • C++ não verifica se você saiu do limite (Out of bounds).
  • arr[10] em um array de 5 pode causar travamentos!

Matrizes (Arrays Multidimensionais)

int matriz[3][3]; // 3 linhas e 3 colunas
matriz[0][0] = 1;

Percorrendo Arrays (Loop for)

for (int i = 0; i < 5; i++) {
    cout << notas[i] << endl;
}

Range-based for (C++11)

  • Forma moderna e segura:
    for (int x : notas) {
        cout << x << endl;
    }
    

Arrays de Caracteres (C-Style Strings)

  • char nome[10] = "Aula";
  • Terminadas pelo caractere nulo \0.

A Classe std::string (C++ Standard)

  • Muito mais poderosa e segura que o array de char.
  • #include <string>

Operações com Strings

  • Concatenação: s1 + s2
  • Tamanho: s.size() ou s.length()
  • Acesso: s[0]

Métodos Úteis

  • s.empty(): Verifica se está vazia.
  • s.clear(): Apaga tudo.
  • s.substr(): Extrai parte do texto.
  • s.find(): Procura texto.

Entrada de Strings (cin vs getline)

  • cin >> nome; (Para no espaço).
  • getline(cin, nome); (Lê a linha inteira).

Comparação de Strings

  • Use ==, !=, <, >.
  • A comparação é feita por ordem alfabética (lexicográfica).

Conversão (String para Número)

  • stoi(s): String para Int.
  • stod(s): String para Double.
  • to_string(num): Número para String.

std::vector (O Array Dinâmico)

  • Array que cresce sozinho!
  • #include <vector>

Uso de vector

vector<int> v;
v.push_back(10); // Adiciona ao fim
v.pop_back();    // Remove do fim

Performance: Reservando Memória

  • v.reserve(100)
  • Evita múltiplas realocações lentas.

Arrays como Argumentos

  • Arrays são passados "como ponteiros" por padrão.
  • Alterar o array dentro da função altera o original!

Algoritmos da STL (std::sort)

  • #include <algorithm>
  • sort(v.begin(), v.end());

Resumo da Aula

  • Use std::string em vez de char[].
  • Use std::vector em vez de array[] (sempre que possível).
  • Cuidado com os índices!

Desafio: Palíndromo

  • Como você verificaria se uma palavra lida é igual de trás para frente?

Fim da Aula 06

  • Próxima aula: Ponteiros e Referências!