自助建网站信息发布企业,企业注册邮箱的步骤,百度搜索风云榜小说总榜,西宁市城乡建设网站简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的C20结构化绑定应用实例。 2.C20结构化绑定介绍
C20 引入了一种新的特性结构化绑定Structured Binding这是一种简化数组和结构体struct初始化的方式。结构化绑定允许你将数组或结构体的元素或成员分别绑定到新的变量名从而使得代码更加清晰和易读。结构化绑定主要针对数组和结构体类型的初始化。当你声明一个数组或结构体变量并给它赋初值时你可以使用结构化绑定来将初值中的每个元素或成员分别绑定到一个新的变量名。这样你就可以在后续的代码中使用这些新绑定的变量名而不是直接使用初值中的元素或成员名。结构化绑定的基本语法如下 auto [var1, var2, var3, …] arr_or_struct; 其中arr_or_struct 是一个数组或结构体类型的变量var1, var2, var3, … 是新的变量名它们分别对应 arr_or_struct 中的每个元素或成员。 结构化绑定有一些使用上的限制。首先它只能用于自动类型即编译时无法确定具体类型的变量不能用于静态类型或模板类型。其次结构化绑定不能用于函数参数或返回类型也不能用于类class的成员变量或方法。此外结构化绑定不能用于初始化一个结构体或类的对象只能用于初始化数组或结构体变量。结构化绑定在实际编程中有很多应用场景。例如当你需要处理一个包含多个元素的数组时你可以使用结构化绑定将数组中的每个元素分别绑定到一个新的变量名从而在后续的代码中更容易操作这些元素。同样当你定义一个结构体类型并给它赋初值时你可以使用结构化绑定将初值中的每个成员分别绑定到一个新的变量名从而使得代码更加清晰和易读。它使得数组和结构体类型的初始化更加方便和直观。通过使用结构化绑定你可以将数组或结构体的元素或成员分别绑定到新的变量名从而使得代码更加清晰和易读同时也提高了编程效率。
3.C普通用法
#include iostream
#include memory
using namespace std;int set(int a, int b, int c, int d, int e, int f){printf(%s(), line %d\n,__FUNCTION__,__LINE__);return 0;
}int main(){set(1, 2, 3, 4, 5, 6);
}
4.c20结构化绑定用法示例
v1.0版本
#include iostream
#include memory
using namespace std;struct SetParams {int a;int b;int c;int d;int e;int f;
};int set(int a, int b, int c, int d, int e, int f){printf(----%s(), line %d\n,__FUNCTION__,__LINE__);return 0;
}void set(SetParams s) {set(s.a, s.b, s.c, s.d, s.e, s.f);
}int main(){SetParams mSetParams {1,2,3,4,5,6}; set(mSetParams);
}
v2.0版本
#include iostream
#include memory
using namespace std;struct SetParams {int a;int b;int c;int d;int e;int f;
};int set(int a, int b, int c, int d, int e, int f){printf(%s(), line %d\n,__FUNCTION__,__LINE__);return 0;
}void set(SetParams s) {set(s.a, s.b, s.c, s.d, s.e, s.f);
}int main(){SetParams *mSetParams;mSetParams new SetParams{1,2,3,4,5,6};set(*mSetParams);
}
v3.0版本
#include iostream
#include memory
using namespace std;struct SetParams {int a;int b;int c;int d;int e;int f;
};int set(int a, int b, int c, int d, int e, int f){printf(%s(), line %d\n,__FUNCTION__,__LINE__);return 0;
}void set(SetParams s) {set(s.a, s.b, s.c, s.d, s.e, s.f);
}int main(){std::unique_ptrSetParams mSetParams; mSetParams std::unique_ptrSetParams{new SetParams{1,2,3,4,5,6}};set(*mSetParams);
}