logo

Loop for baseado em intervalo em C++

Neste tópico, discutiremos o loop for baseado em intervalo na linguagem de programação C++. A linguagem C++ introduziu um novo conceito de loop for baseado em intervalo no C++ 11 e versões posteriores, que é muito melhor do que o loop For normal. Um loop for baseado em intervalo não requer grande codificação para implementar a iteração do loop for. É um iterador sequencial que iterou cada elemento do contêiner em um intervalo (do início ao fim).

Loop for baseado em intervalo em C++

Sintaxe

 for (range_declaration : range_expression ) loop statement 
    declaração_de_intervalo:É usado para declarar uma variável cujo tipo é igual aos tipos dos elementos coletados representados pela range_expression ou referência a esse tipo.expressão_intervalo:Ele define uma expressão que representa a sequência adequada de elementos.instrução de loop:Ele define o corpo do loop for baseado em intervalo que contém uma ou mais instruções a serem executadas repetidamente até o final da expressão de intervalo.

Nota: Se não soubermos o tipo de dados dos elementos do contêiner, podemos usar a palavra-chave auto que identifica automaticamente o tipo de dados de range_expression.

Programa para imprimir cada elemento do array usando intervalo for baseado em loop

Vamos considerar um exemplo para imprimir o array int e double usando o loop for baseado em intervalo em C++.

programa.cpp

 #include using namespace std; int main () { int arr1 [5] = { 10, 20, 30, 40, 50}; double darr [5] = { 2.4, 4.5, 1.5, 3.5, 4.0 }; // use range based for loop for ( const auto &var : arr1 ) { cout << var << ' ' ; } // use auto keyword to automatically specify the data type of darr container. for ( const auto &var : darr ) { cout << var << ' ' ; } return 0; } 

Saída

 10 20 30 40 50 2.4 4.5 1.5 3.5 4.0 

Programa para demonstrar o vetor em intervalo baseado em loop

Vamos escrever um programa simples para implementar o vetor em intervalo baseado em loop for.

Programa2.cpp

píton ou
 #include #include using namespace std; int main() { int x; // declare integer variable // declare vector variable vector vect = {5, 10 , 25, 20, 25}; // display vector elements for ( int x : vect) { cout << x << ' '; } return 0; } 

Saída

 5 10 25 20 25 

Programa para imprimir os arrays usando Range baseado em loop for em C++ com referência

Vamos considerar um exemplo para imprimir os elementos da matriz usando intervalo for baseado em loop em C++.

Programa3.cpp

 #include #include #include using namespace std; int main(){ array data = {1, 3, -2, 4, 6, 7, 9}; cout << ' Before updating the elements: ' << endl; for (int x : data){ cout << x << ' '; } // pass the references for (int &itemRef : data){ itemRef *= 3; } cout << endl << ' After modification of the elements: ' << endl; for (int x : data){ cout << x << ' '; } cout << endl; return 0; } 

Saída

 Before updating the elements: 1 3 -2 4 6 7 9 After modification of the elements: 3 9 -6 12 18 21 27 

Loop for baseado em intervalo aninhado

Quando um loop é definido dentro do corpo de outro loop, o loop é chamado de loop for aninhado. Da mesma forma, quando definimos um intervalo em um loop dentro de outro loop baseado em intervalo, a técnica é conhecida como loop for baseado em intervalo aninhado.

Sintaxe:

 for ( int x : range_expression) // outer loop { for ( int y : range_expression) // inner loop { // statement to be executed } // statement to be executed } 

Na sintaxe acima, definimos um loop for baseado em intervalo dentro de outro loop. Aqui chamamos o loop for baseado em intervalo interno e externo em C++.

Programa para imprimir o loop for baseado em intervalo aninhado em C++

Considere um exemplo para demonstrar o intervalo aninhado baseado no loop for na linguagem de programação C++.

Faixa.cpp

 #include using namespace std; int main () { int arr1[4] = { 0, 1, 2, 3 }; int arr2[5] = { 1, 2, 3, 4, 5 }; // use nested range based for loop for ( int x : arr1 ) { // declare nested loop for ( int y : arr2 ) { cout << ' x = ' << x << ' and j = ' << y << endl; } } return 0; } 

Saída

 x = 0 and j = 1 x = 0 and j = 2 x = 0 and j = 3 x = 0 and j = 4 x = 0 and j = 5 x = 1 and j = 1 x = 1 and j = 2 x = 1 and j = 3 x = 1 and j = 4 x = 1 and j = 5 x = 2 and j = 1 x = 2 and j = 2 x = 2 and j = 3 x = 2 and j = 4 x = 2 and j = 5 x = 3 and j = 1 x = 3 and j = 2 x = 3 and j = 3 x = 3 and j = 4 x = 3 and j = 5 

Qual é a diferença entre o loop for tradicional e o loop for baseado em intervalo?

A tradicional para loop é usado para executar repetidamente o bloco de código até que a condição especificada seja verdadeira. Um loop for tradicional possui três parâmetros, inicialização da variável, especificação da condição, e o último é o contador que é incrementado em um se a condição permanecer verdadeira.

Sintaxe:

 for ( variable_initialization; specify_condition; updated_counter) { // statement to be executed; } 

Loop baseado em intervalo

Por outro lado, temos um novo loop for baseado em intervalo disponível no C++ 11 e versões posteriores. Possui dois parâmetros, declaração de intervalo e a expressão range_. Também é usado para executar repetidamente o bloco de código em um intervalo.

conjunto de texto datilografado

Sintaxe

 for ( range_declaration : range_ expression ) { loop _statement; // statement to be executed; } 

O range_declaration é usado para declarar o tipo de variável relacionada ao range_expression (contêiner). O range_expression: é como um contêiner que contém os mesmos tipos de elementos de maneira sequencial. O loop_statement define a instrução que é executada dentro do loop for.

Vantagens do loop for baseado em intervalo

  1. É fácil de usar e sua sintaxe também é simples.
  2. Um loop for baseado em intervalo não requer o cálculo do número de elementos em um contêiner
  3. Ele reconhece os elementos iniciais e finais dos contêineres.
  4. Podemos modificar facilmente o tamanho e os elementos do contêiner.
  5. Não cria nenhuma cópia dos elementos.
  6. É muito mais rápido que o loop for tradicional.
  7. Geralmente usa a palavra-chave auto para reconhecer o tipo de dados dos elementos do contêiner.

Desvantagem do loop for baseado em intervalo

  1. Não pode percorrer uma parte de uma lista.
  2. Não pode ser usado para percorrer na ordem inversa
  3. Não pode ser usado em ponteiros.
  4. Não oferece indexação dos elementos atuais.