À QUOI ÇA SERT ?
Les structured bindings permettent de donner directement des noms aux composants d’un objet.
initializer_list permet de recevoir une liste de valeurs entre accolades.
1. STRUCTURED BINDINGS
Code: Select all
std::pair<int, std::string> p{42, "test"};
auto [id, name] = p;
Code: Select all
id == 42
name == "test"
Code: Select all
p.first
p.second
2. COPIE OU RÉFÉRENCE
Code: Select all
auto [x, y] = p;
Si tu veux travailler directement avec l’objet :
Code: Select all
auto& [x, y] = p;
Lecture seule sans copie :
Code: Select all
const auto& [x, y] = p;
3. STRUCT
Code: Select all
struct Point
{
int x;
int y;
};
Point p{10, 20};
auto [x, y] = p;
4. initializer_list
Code: Select all
void print(std::initializer_list<int> values)
{
for (int value : values)
{
std::cout << value << '\n';
}
}
Code: Select all
print({1, 2, 3, 4});
À créer des interfaces naturelles acceptant une liste de valeurs homogènes.
À RETENIR
Structured binding :
décomposer un objet.
initializer_list :
accepter une liste écrite avec {}.
