bucle for basato su intervalli in C++
-
Usa il bucle basato su intervallo
for
per stampare elementi distd::map
in C++ -
Usa il bucle basato su intervallo
for
per stampare i membri distruct
in C++
Questo articolo dimostrerà diversi metodi su come utilizzare un cicli for
basato su intervalli in C++.
Usa il bucle basato su intervallo for
per stampare elementi di std::map
in C++
Il cicli for
basato su intervalli è un equivalente più leggibile del normale cicli for
. Può essere usato per attraversare l’array o qualsiasi altro oggetto che abbia funzioni membro begin
e end
. Nota che usiamo la parola chiave auto
e il riferimento all’elemento per accedervi. In questo caso, l ‘elemento
si riferisce al singolo elemento di std::map
, che risulta essere di tipo std::pair
. Pertanto, l’accesso alle coppie chiave-valore richiede una speciale notazione del punto per accedervi utilizzando le parole chiave 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;
}
Produzione:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
In alternativa, un bucle basato su intervalli può accedere agli elementi utilizzando la notazione di associazione strutturata e rendere il blocco di codice più conciso. Nell’esempio seguente, dimostriamo tale utilizzo dell’associazione per l’accesso alle coppie 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;
}
Produzione:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
Usa il bucle basato su intervallo for
per stampare i membri di struct
in C++
L’associazione strutturata può essere estremamente utile quando gli elementi attraversati rappresentano le strutture relativamente più grandi con più membri di dati. Come mostrato nel codice di esempio successivo, questi membri vengono dichiarati come una lista di identificatori e quindi referenziati direttamente senza la notazione struct.member
. Si noti che la maggior parte dei contenitori STL sono attraversabili utilizzando il cicli for
basato su intervalli.
#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;
}
Produzione:
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