Vetores

Vetores

Vetores (arrays unidimensionais) são estruturas fundamentais que armazenam coleções ordenadas de elementos do mesmo tipo, com acesso direto via índices.

Características Essenciais

  • Homogeneidade: Todos elementos são do mesmo tipo (int, float, char, etc.)
  • Tamanho Fixo: Dimensão definida na declaração (para alocação estática)
  • Contiguidade: Elementos armazenados em posições consecutivas de memória
  • Indexação: Acesso via índices inteiros, iniciando em 0

Modelo de Memória

O compilador calcula posições de memória usando:
endereço_elemento = endereço_base + (índice × sizeof(tipo))

  • Alocação estática: reserva espaço na stack durante a compilação
  • Alocação dinâmica: usa heap com malloc/calloc

Propriedades de Acesso

  • Complexidade O(1): Acesso direto a qualquer elemento
  • Localidade Espacial: Excelente performance em loops devido à pré-fetch
  • Overhead Zero: Nenhuma metainformação é armazenada

Limitações Fundamentais

  • Tamanho Imutável: Não pode ser redimensionado (estático)
  • Sem Verificação: Acesso fora dos limites causa comportamento indefinido
  • Inflexibilidade: Inserções/remoções custosas no meio do vetor

Comparação Vetor vs Lista

Operação Vetor Lista
Acesso aleatório O(1) O(n)
Inserção no início O(n) O(1)
Uso de memória Ótimo (sem overhead) Pobre (ponteiros adicionais)

Casos de Uso Ideais

  • Coleções de tamanho conhecido e fixo
  • Aplicações que exigem acesso aleatório frequente
  • Processamento numérico intensivo
  • Implementação de buffers e pilhas estáticas