std::
initializer_list
类模板 <initializer_list>
template<class T> class initializer_list;
|
初始化列表
该类型用于访问c++初始化列表中的值,该初始化列表是一个const T类型的元素列表。
这种类型的对象由编译器根据初始化列表声明自动构造,初始化列表是用大括号括起来的逗号分隔的元素列表:
auto il = { 10, 20, 30 }; // the type of il is an initializer_list
|
请注意,这个模板类没有隐式定义,即使隐式使用类型,也要包含头文件<initializer_list>来访问它。
initializer_list对象被自动构造,就像分配了一个T类型的元素数组一样,
列表中的每个元素都被复制初始化为数组中相应的元素,使用任何必要的非收缩隐式转换。
initializer_list对象引用这个数组中的元素不包含:
复制一个initializer_list对象会生成另一个对象引用相同的基础元素,而不是它们的新副本(引用语义)。
这个临时数组的生存期与initializer_list对象相同。
只接受一个这种类型参数的构造函数是一种特殊的构造函数,称为初始化列表构造函数。
当使用初始化列表构造函数语法时,初始化列表构造函数优先于其他构造函数:
struct myclass {
myclass (int,int);
myclass (initializer_list<int>);
/* definitions ... */
};
myclass foo {10,20}; // calls initializer_list ctor
myclass bar (10,20); // calls first constructor
|
☲ 模板参数
-
T
-
元素的类型。
成员类型initializer_list::value_type的别名。
☲ 成员类型
成员类型 |
定义 |
value_type |
模板参数(T) |
reference |
const T&
否则,没有定义。 |
const_reference |
const T& |
size_type |
size_t |
iterator |
const T* |
const_iterator |
const T* |
☲ 成员函数
☲ 非成员函数重载