Menu
Coddy logo textTech

Loop For Baseado em Intervalo

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy. Lição 15 de 56.

Embora os for tradicionais com índices funcionem bem para iterar por vector, o C++ oferece uma solução mais elegante: o for baseado em intervalo. Essa sintaxe moderna elimina a necessidade de gerenciar índices manualmente e torna seu código mais limpo e fácil de ler.

O loop for baseado em intervalo lida automaticamente com os detalhes da iteração para você. Em vez de gerenciar uma variável de índice, basta especificar o que você quer fazer com cada elemento:

std::vector<std::string> names = {"Alice", "Bob", "Charlie"};

for (const std::string& name : names) {
    std::cout << name << std::endl;
}

Este loop faz exatamente a mesma coisa que a abordagem tradicional baseada em índice, mas com uma sintaxe muito mais simples. A variável name assume automaticamente o valor de cada elemento do vetor, um de cada vez.

Você pode notar o símbolo & na declaração do loop: const std::string& name. Nesse contexto, & não significa "endereço de", como você pode ter visto antes. Aqui, ele declara name como uma referência (um alias) diretamente para cada elemento do vetor, em vez de criar uma cópia dele. Pense nisso como dar um novo nome ao mesmo dado, de forma semelhante ao uso de um ponteiro para o elemento, mas sem precisar desreferenciá-lo dentro do corpo do loop.

A palavra-chave const é uma medida de segurança: ela impede que você modifique acidentalmente o elemento por meio do alias dentro do corpo do loop. O próprio alias ainda avança para cada novo elemento a cada iteração. É o conteúdo que você acessa por meio do alias que permanece constante, não a progressão do loop.

O loop for baseado em intervalo não é apenas mais legível, mas também mais seguro — não há risco de erros de índice, pois você não gerencia os índices manualmente. Ele funciona com qualquer contêiner que ofereça suporte à iteração, tornando-se uma ferramenta versátil para processar coleções de dados em C++.

challenge icon

Desafio

Fácil

Crie um programa que demonstre o loop for baseado em intervalo processando uma coleção de nomes de cidades e exibindo-os com suas contagens de caracteres.

As seguintes entradas serão fornecidas:

  • Um inteiro n representando o número de cidades
  • Em seguida, n strings representando os nomes das cidades

Seu programa deve:

  1. Criar um std::vector<std::string> chamado cities
  2. Usar push_back() para adicionar cada um dos n nomes de cidades ao vetor
  3. Usar um loop for baseado em intervalo para iterar pelo vetor
  4. Para cada cidade no loop, imprimir o nome da cidade seguido de seu comprimento usando o método .length()
  5. Após o loop, imprimir o número total de cidades processadas usando o método .size() do vetor

Use o seguinte formato exato de saída:

City: [city name] (Length: [number of characters])\nCity: [city name] (Length: [number of characters])\n...\nTotal cities processed: [total count]

O loop for baseado em intervalo deve usar a sintaxe for (const std::string& city : cities) para iterar por cada elemento do vetor. Use city.length() para obter o número de caracteres em cada nome de cidade.

Experimente você mesmo

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    // Leia o número de cidades
    int n;
    cin >> n;
    
    // Crie um vetor para armazenar os nomes das cidades
    vector<string> cities;
    
    // Leia os nomes das cidades e adicione-os ao vetor
    for (int i = 0; i < n; i++) {
        string city;
        cin >> city;
        cities.push_back(city);
    }
    
    // TODO: Escreva seu código abaixo
    // Use um loop for baseado em intervalo para iterar pelo vetor cities
    // Imprima cada cidade com seu comprimento usando o formato especificado
    // After the loop, print the total number of cities processed
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de C++ online