目录
一、std::initializer_list
- initializer_list是一种标准库类型,用于表示某种特定类型的值的数组。和vector一样,initializer_list也是一种模板类型,定义 initializer_list 对象时,必须说明列表中所含元素的类型。和vector不一样的是,initializer_list 对象中的元素永远是常量值,我们无法改变 initializer_list 对象中元素的值。
- initializer_list 可以作用于可变数量的实参,有时我们无法提前预知应该向函数传递几个实参。为了编写能处理不同数量实参的函数,C++11新标准提供了两种主要的方法:①如果所有的实参类型相同,可以传递一个名为 initializer_list 的标准库类型;②如果实参的类型不同,我们可以编写一种特殊的函数,也就是所谓的可变参数模板。
- 作用于 initializer_list 对象的begin和end操作类似于vector对应的成员。begin()成员提供一个指向列表首元素的指针,end()成员提供一个指向列表尾元素的指针。
- 含有 initializer_list 形参的函数也可以同时拥有其他形参。
- 类模板 initializer_list 用于访问初始化列表(initialization list),列表元素的数据类型为const T.编译器从花括号(brace)封闭的、元素由逗号分隔开的初始化列表自动构造initializer_list模板类,例如:
- auto il = {10,20, 30}; // the type of il is an initializer_list<int>
- 【initializer_list 官方文档】
1、std::initializer_list是什么类型
2、std::initializer_list 的应用场景
这里 arr 没有显式指定长度,因此,它的初始化列表可以是任意长度。
同样, std::map、 std::set、 std::vector 也可以在初始化时任意书写需要初始化的内容。