c++中的结构化绑定(Structured Bindings)怎么用_c++ C++17分解对象【语法】

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

c++中的结构化绑定(Structured Bindings)怎么用_c++ C++17分解对象【语法】-第1张图片-佛山资讯网

结构化绑定(Structured Bindings)是 C++17 引入的语法特性,用于**直接解构一个对象(如 tuple、array、结构体等),把它的成员一次性绑定到多个变量上**,写法简洁,语义清晰。

基本语法和使用条件

结构化绑定的声明形式为:

auto [a, b, c] = expr;

登录后复制

其中 expr 必须满足以下任一条件:

  • std::tuplestd::pairstd::array 等标准库容器(需支持 std::get 或数组访问)
  • 是拥有公开、非静态、非引用、非位域的非静态数据成员的类或结构体(即“聚合类”或显式定义了 gettuple_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. 解构自定义结构体(聚合类)

标签: ai c++ 标准库 red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~