Structured binding is a feature introduced in C++17 that allows for more concise
and readable code when working with tuple-like types. It allows you to easily
unpack the elements of a tuple, or the members of a struct, into individual
variables.
Here's an example code that demonstrates the use of structured binding with a tuple:
struct Person {
std::string name;
int age;
double height;
};
int main() {
Person p = {"John Smith", 30, 6.2};
// Before C++17
std::string name = p.name;
int age = p.age;
double height = p.height;
// C++17 and later
auto [name, age, height] = p;
}
c++
Copy code
#include <iostream>
#include <tuple>
int main() {
std::tuple<int, double, std::string> t(10, 3.14, "Hello World");
// Traditional way to unpack a tuple
int a = std::get<0>(t);
double b = std::get<1>(t);
std::string c = std::get<2>(t);
// Using structured binding to unpack a tuple
auto [a, b, c] = t;
std::cout << a << " " << b << " " << c << std::endl;
return 0;
}
Output:
10 3.14 Hello World
In this example, we have a tuple t with three elements of different types. The
traditional way to access the elements of the tuple is to use the std::get function,
which requires us to specify the index of the element we want to access. With
structured binding, we can use the auto keyword and a list of variables in square
brackets ([ ]) to unpack the elements of the tuple into individual variables. This
way of unpacking a tuple is more readable, and it also works with structs and
classes that have std::tuple_size and std::tuple_element defined for them.
The variables are declared in a list separated by , as shown in this example.
To embed this project on your website, copy the following code and paste it into your website's HTML: