结构化绑定是C++17引入的语法特性,用于直接解构tuple、array、聚合类等对象并一次性绑定成员到多个变量;需满足标准容器、聚合类或C风格数组条件,支持值绑定、引用绑定及范围for遍历。

结构化绑定(Structured Bindings)是 C++17 引入的语法特性,用于**直接解构一个对象(如 tuple、array、结构体等),把它的成员一次性绑定到多个变量上**,写法简洁,语义清晰。
基本语法和使用条件
结构化绑定的声明形式为:
auto [a, b, c] = expr;
登录后复制
其中 expr 必须满足以下任一条件:
- 是
std::tuple、std::pair、std::array等标准库容器(需支持std::get或数组访问) - 是拥有公开、非静态、非引用、非位域的非静态数据成员的类或结构体(即“聚合类”或显式定义了
get和tuple_size的类型) - 是 C 风格数组(如
int arr[3])
常见用法示例
1. 解构 std::tuple / std::pair
立即学习“C++免费学习笔记(深入)”;
auto t = std::make_tuple(42, "hello", 3.14); auto [i, s, d] = t; // i:int=42, s:const char*="hello", d:double=3.14 auto p = std::make_pair(100, 'A'); auto [x, y] = p; // x:int=100, y:char='A'
登录后复制
2. 解构 std::array
std::array<int, 3> a = {1, 2, 3};
auto [x, y, z] = a; // x=1, y=2, z=3登录后复制
3. 解构自定义结构体(聚合类)
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~