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).
Sintaxe
for (range_declaration : range_expression ) loop statement
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
- É fácil de usar e sua sintaxe também é simples.
- Um loop for baseado em intervalo não requer o cálculo do número de elementos em um contêiner
- Ele reconhece os elementos iniciais e finais dos contêineres.
- Podemos modificar facilmente o tamanho e os elementos do contêiner.
- Não cria nenhuma cópia dos elementos.
- É muito mais rápido que o loop for tradicional.
- Geralmente usa a palavra-chave auto para reconhecer o tipo de dados dos elementos do contêiner.
Desvantagem do loop for baseado em intervalo
- Não pode percorrer uma parte de uma lista.
- Não pode ser usado para percorrer na ordem inversa
- Não pode ser usado em ponteiros.
- Não oferece indexação dos elementos atuais.