Percorrer vetores: índice, range-for e iteradores
Percorra um vetor com acesso por índice, range-for e iteradores explícitos
Percorrer vetores: índice, range-for e iteradores é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
Três maneiras de percorrer
Você pode percorrer um vetor com:
forbaseado em índicefor (size_t i = 0; i < v.size(); ++i)forbaseado em intervalofor (auto& x : v)- Iteradores
for (auto it = v.begin(); it != v.end(); ++it)
Laço baseado em índice
Familiar da linguagem C. É útil quando você precisa do índice junto do valor.
for (size_t i = 0; i < v.size(); ++i) {
std::cout << i << ": " << v[i] << "\n";
}size_t versus int
size() retorna size_t — um tipo sem sinal. Misturá-lo com um contador int com sinal causa avisos do compilador e erros sutis. Use size_t ou std::ssize do C++20.
for baseado em intervalo
É a forma mais clara quando você não precisa dos índices. Escolha o qualificador de referência correto.
for (const auto& x : v) std::cout << x << " "; // read only
for (auto& x : v) x *= 2; // modify in placeIteradores
Um iterador é um ponteiro generalizado. v.begin() aponta para o primeiro elemento; v.end(), para a posição imediatamente após o último.
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}const_iterator
Use cbegin() e cend() quando não precisar modificar os elementos — o tipo do iterador será const_iterator.
Iteradores reversos
rbegin() e rend() percorrem do final para o início. A desreferenciação produz os mesmos elementos, mas na ordem inversa.
for (auto it = v.rbegin(); it != v.rend(); ++it) {
std::cout << *it << " ";
}Aritmética de iteradores
Os iteradores de vetores têm acesso aleatório: você pode somar e subtrair inteiros e compará-los usando <.
auto it = v.begin();
it += 3; // skip 3 elements
std::cout << *it;Os algoritmos usam iteradores
Os algoritmos da STL recebem pares de iteradores. Passe v.begin(), v.end() para algoritmos como std::sort ou std::find.
#include <algorithm>
std::sort(v.begin(), v.end());
auto it = std::find(v.begin(), v.end(), 42);Quando os iteradores deixam de ser válidos
Adicionar elementos a um vetor pode causar realocação. Todos os iteradores, ponteiros e referências para o vetor deixam de ser válidos após qualquer operação que altere a capacidade.
Armadilha: modificar durante a iteração
Nunca chame push_back ou erase durante um for baseado em intervalo sobre o mesmo vetor. Crie um novo vetor ou armazene os índices para agir sobre eles depois.
Verificação rápida
Qual forma de iteração invalida seu iterador se push_back causar uma realocação?
Recapitulação
Escolha o for baseado em intervalo quando não precisar dos índices, o baseado em índice quando precisar deles e o baseado em iteradores ao trabalhar com algoritmos. A realocação invalida os iteradores — nunca chame push_back durante a iteração.
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Percorrer vetores: índice, range-for e iteradores” é grátis?
Sim — o texto completo de “Percorrer vetores: índice, range-for e iteradores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Percorrer vetores: índice, range-for e iteradores”?
Percorra um vetor com acesso por índice, range-for e iteradores explícitos Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Percorrer vetores: índice, range-for e iteradores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Noções básicas de std::vector: push_back, size, capacity
- Percorrer vetores: índice, range-for e iteradores
- Modificar vetores: insert, erase, clear
- Vector versus std::array versus matriz em C