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