0Pricing
C++ Academy · Aula

Ciclo for baseado em intervalos com contentores

Percorra contentores de forma simples com a sintaxe de for baseada em intervalos do C++11

Ciclo for baseado em intervalos com contentores é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 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.

O laço moderno

O C++11 introduziu o laço for baseado em intervalo — itere sobre qualquer contêiner sem índices ou iteradores explícitos. O código fica mais limpo e é mais difícil cometer erros.

std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
    std::cout << x << " ";
}

Por valor

O exemplo acima copia cada elemento para x. Tudo bem para tipos baratos, como int; mas isso é dispendioso para objetos grandes.

Por referência const

Para tipos não triviais, use const auto& para evitar cópias e indicar que você não modificará os elementos.

std::vector<std::string> names = {"Ada", "Bob"};
for (const auto& name : names) {
    std::cout << name << "\n";
}

Por referência para modificar

Use uma referência simples para modificar os elementos no próprio contêiner.

std::vector<int> v = {1, 2, 3};
for (auto& x : v) {
    x *= 10;
}
// v is now {10, 20, 30}

auto para dedução de tipos

Deixe o compilador deduzir o tipo do elemento. Com strings, vetores de estruturas e mapas, isso economiza muita digitação.

Iterando sobre um mapa

Cada elemento é um std::pair<const Key, Value>. Use vinculações estruturadas (C++17) para obter um código mais limpo.

std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
    std::cout << name << ": " << age << "\n";
}

Iterando sobre strings

Uma std::string é um contêiner de char.

std::string s = "hello";
for (char c : s) {
    std::cout << c << " ";
}

Laços sobre listas de inicialização

Você pode iterar diretamente sobre uma lista delimitada por chaves.

for (int n : {1, 2, 4, 8, 16}) {
    std::cout << n << " ";
}

Laço baseado em intervalo reverso

O for baseado em intervalo padrão avança para a frente. Para iterar na ordem inversa, use std::ranges::reverse_view (C++20) ou iteradores reversos manuais.

#include <ranges>
for (auto x : v | std::views::reverse) {
    std::cout << x;
}

Limitações

O for baseado em intervalo não consegue:

  • Saber o índice atual sem um contador separado
  • Pular elementos ou modificar o contêiner durante a iteração
  • Iterar sobre dois contêineres em paralelo (use um for comum ou uma combinação por posição)

Tipos personalizados em for baseado em intervalo

Para fazer sua própria classe funcionar com for baseado em intervalo, forneça membros begin() e end() ou funções livres que retornem iteradores.

Verificação rápida

Qual forma de laço for baseado em intervalo modifica os elementos do contêiner?

Recapitulação

O for baseado em intervalo é a forma mais limpa de iterar. Use const auto& por padrão, auto& para modificar e vinculações estruturadas para decompor pares e tuplas.

Perguntas Frequentes

A aula “Ciclo for baseado em intervalos com contentores” é grátis?

Sim — o texto completo de “Ciclo for baseado em intervalos com contentores” é 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 “Ciclo for baseado em intervalos com contentores”?

Percorra contentores de forma simples com a sintaxe de for baseada em intervalos do C++11 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 3 de 4.

Quanto tempo leva a aula “Ciclo for baseado em intervalos com contentores”?

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

  1. Ramificações: if-else, ternário, switch-case
  2. Padrões de ciclos: for, while, do-while
  3. Ciclo for baseado em intervalos com contentores
  4. Retornos antecipados, break, continue e goto
← Voltar para C++ Academy