某集团网站建设规划书,网站建设_广州网站建设专业公司,全国物流平台货找车,怎样自创广告网站author: hjjdebug date: 2025年 05月 28日 星期三 15:57:58 CST descrip: c结构化绑定: 结构化绑定: 名称辨析: 名称叫绑定好还是叫解绑好#xff1f; 解绑意思是原来是一个整体,现在被分成了若干个部分,所以叫解. 绑定强调的意思是. 被分解的某个变量,绑定到了整体的某个变量…
author: hjjdebug date: 2025年 05月 28日 星期三 15:57:58 CST descrip: c结构化绑定: 结构化绑定: 名称辨析: 名称叫绑定好还是叫解绑好 解绑意思是原来是一个整体,现在被分成了若干个部分,所以叫解. 绑定强调的意思是. 被分解的某个变量,绑定到了整体的某个变量上. 做为整体的对象没有被分解. 按照大家的认识,还是叫结构化绑定比较好. 目的: 结构化绑定是C17引入的特性用于简化聚合类型的数据解构操作 操作对象:结构化绑定允许开发者通过单个声明(一行代码) 将复合数据对象 如std::tuple、数组、结构体的成员直接解构至独立的变量. 实现原理: 其本质是编译器自动生成对聚合类型成员的匿名引用或拷贝
结构化绑定主要用于访问公开成员要访问私有成员需要结合其他技术手段
测试代码:
$ cat main.cpp
#include iostream
#include tuple
#include map
class Point
{
public:Point(int x,int y,int z):_x(x),_y(y),_z(z){}
public:int _x,_y,_z; //如果是私有成员,需要结合其他技术手段
};//结构化绑定实例,
int main()
{//结构体解构, 用单个的变量绑定到结构的成员变量上.Point p{3, 5, 8};auto [i1, i2, i3] p; std::cout i1/i2/i3: i1 i2 i3 \n;//数组解包, 用单个变量,绑定到数组的元素上.int arr[3] {10, 20, 30};auto [a, b, c] arr; std::couta/b/c: a b c \n;//元组解包, 用单个变量去绑定元组中各个元素std::tupleint, std::string, float data{42, text, 1.2f};auto [num, str, val] data; std::coutnum/str/val: num str val \n;//遍历关联容器std::mapstd::string, int m{{a,1}, {b,2}};for (const auto [key, value] : m) { // 把map容器对象直接解构到键值对变量.std::cout key : value |;}std::cout\n;return 0;
}执行结果: $ ./tt i1/i2/i3: 3 5 8 a/b/c:10 20 30 num/str/val:42 text 1.2 a:1|b:2|