做网站 附加信息,淘宝官网首页入口,wordpress 多说评论,区域推广网站前言 大家好吖#xff0c;欢迎来到 YY 滴C11系列 #xff0c;热烈欢迎#xff01; 本章主要内容面向接触过C的老铁 主要内容含#xff1a; 欢迎订阅 YY滴C专栏#xff01;更多干货持续更新#xff01;以下是传送门#xff01; 目录 一.探究std::initializer_list是什么… 前言 大家好吖欢迎来到 YY 滴C11系列 热烈欢迎 本章主要内容面向接触过C的老铁 主要内容含 欢迎订阅 YY滴C专栏更多干货持续更新以下是传送门 目录 一.探究std::initializer_list是什么二.std::initializer_list使用场景初始化容器对象作为operator的参数......三.对比【C11特性{ }的隐式类型转换】【调用initializer_list的vector构造函数】不同原理四.std::initializer_list的文档传送门 一.探究std::initializer_list是什么 我们观察下面代码 根据输出结果“the type of il is an initializer_list”我们可以知道 initializer_list是作为参数的构造函数 int main()
{auto il { 10, 20, 30 };cout typeid(il).name() endl; 输出结果the type of il is an initializer_listreturn 0;
}二.std::initializer_list使用场景初始化容器对象作为operator的参数… std::initializer_list一般是作为构造函数的参数 C11对STL中的不少容器 vectorlistmap… 就 增加std::initializer_list作为参数的构造函数 这样初始化容器对象就更方便了 std::initializer_list也可以作为operator的参数 这样就可以用大括号赋值 三.对比【C11特性{ }的隐式类型转换】【调用initializer_list的vector构造函数】不同原理 C11中新增的关于{}用法 传送门具体对象是下面代码中Point 直接调用两个参数的构造 – 隐式类型转换 我们vector容器构造函数的参数是std::initializer_list 这里是调用initializer_list的vector构造函数 struct Point
{//explicit Point(int x, int y)//调用后可不让其隐式类型转换Point(int x, int y):_x(x),_y(y){cout Point(int x, int y) endl;}int _x;int _y;
};
int main()
{ // 不同的规则vectorint v1 { 1,2,3,4,3}; // 调用initializer_list的vector构造函数Point p1 { 1,1}; // 直接调用两个参数的构造 -- 隐式类型转换return 0;
}四.std::initializer_list的文档传送门 initializer_list 文档传送门