Fácil C++
Percorrendo um vetor com iteradores
Enunciado
Escreva um programa que crie um std::vector<int> com os valores {2, 4, 6, 8, 10} e use iteradores (begin() e end()) para imprimir cada elemento separado por espaço, em uma única linha.
Requisitos
- Usar
std::vector<int>com os valores indicados. - Percorrer o vetor usando iteradores (não use
forbaseado em intervalo). - Imprimir os elementos na ordem original, separados por espaço.
Código inicial
#include <iostream>
#include <vector>
int main() {
std::vector<int> v{2, 4, 6, 8, 10};
// Seu código aqui
return 0;
}
Saída esperada
2 4 6 8 10
Ver dica
Use um laço for com auto it = v.begin(); it != v.end(); ++it e imprima *it.
Mostrar solução
#include <iostream>
#include <vector>
int main() {
std::vector<int> v{2, 4, 6, 8, 10};
// Itera do início (begin) até o fim (end)
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << ' ';
}
std::cout << '\n';
return 0;
}
Passo a passo
- Criamos um
std::vector<int>com os valores{2, 4, 6, 8, 10}. - O laço
forinicializaitcomv.begin(), que aponta para o primeiro elemento (2). - A condição
it != v.end()verifica se ainda não chegamos ao fim (posição após o último elemento). - O incremento
++itavança o iterador para o próximo elemento. - Dentro do laço,
*itacessa o valor apontado e o imprime seguido de um espaço. - Ao final, imprimimos uma quebra de linha para finalizar a saída.
Por que funciona
O par begin()/end() define um intervalo semiaberto [begin, end). O laço percorre exatamente todos os elementos, pois começa no primeiro e para quando o iterador alcança a posição após o último. Essa é a forma idiomática de percorrer contêineres com iteradores em C++.
Erros comuns
- Usar
it <= v.end(): comoend()aponta para uma posição inválida, a comparação<=pode levar a comportamento indefinido. Use sempre!=. - Esquecer de incrementar o iterador: o laço entra em loop infinito. Certifique-se de incluir
++it. - Desreferenciar
end():*v.end()é comportamento indefinido. O laço deve parar antes de desreferenciar o fim.
Outra forma de resolver
Usar for baseado em intervalo (for (int x : v)) é mais simples, mas não exercita iteradores explicitamente. Para este exercício, a versão com iteradores é a pedida.
Saída esperada
2 4 6 8 10