Baseado em intervalo for Loop em C++
-
Use o loop
for
baseado em intervalo para imprimir os elementos destd::map
em C++ -
Use o Loop
for
baseado em intervalo para imprimir membros destruct
em C++
Este artigo demonstrará vários métodos sobre como usar um loop for
baseado em intervalo em C++.
Use o loop for
baseado em intervalo para imprimir os elementos de std::map
em C++
O loop for
baseado em intervalo é um equivalente mais legível do loop for
regular. Ele pode ser usado para percorrer a matriz ou qualquer outro objeto que tenha funções-membro begin
e end
. Observe que usamos a palavra-chave auto
e a referência ao elemento para acessá-lo. Neste caso, o item
refere-se ao único elemento de std::map
, que por acaso é do tipo std::pair
. Assim, acessar os pares de valor-chave requer notação de ponto especial para acessá-los usando palavras-chave first
/second
.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (auto &item : fruit_map) {
cout << "[" << item.first << "," << item.second << "]\n";
}
return EXIT_SUCCESS;
}
Resultado:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
Como alternativa, um loop baseado em intervalo pode acessar elementos usando notação de ligação estruturada e tornar o bloco de código mais conciso. No exemplo a seguir, demonstramos esse uso de ligação para acessar pares std::map
.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (const auto& [key, val] : fruit_map) {
cout << "[" << key << "," << val << "]\n";
}
return EXIT_SUCCESS;
}
Resultado:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
Use o Loop for
baseado em intervalo para imprimir membros de struct
em C++
A vinculação estruturada pode ser extremamente útil quando os elementos percorridos representam as estruturas relativamente maiores com vários membros de dados. Conforme mostrado no próximo código de exemplo, esses membros são declarados como uma lista de identificadores e, em seguida, referenciados diretamente sem a notação struct.member
. Observe que a maioria dos contêineres STL podem ser percorridos usando o loop for
baseado em intervalo.
#include <iostream>
#include <list>
using std::cin;
using std::cout;
using std::endl;
using std::list;
using std::string;
struct Person {
string name;
string surname;
int age;
};
int main() {
list<Person> persons = {{"T", "M", 11},
{"R", "S", 23},
{"J", "R", 43},
{"A", "C", 60},
{"D", "C", 97}};
for (const auto& [n, s, age] : persons) {
cout << n << "." << s << " - " << age << " years old" << endl;
}
return EXIT_SUCCESS;
}
Resultado:
T.M - 11 years old
R.S - 23 years old
J.R - 43 years old
A.C - 60 years old
D.C - 97 years old
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook