initializer_list是C++11提供的新类型,定义在头文件中。
用于表示某种特定类型的值的数组,和vector一样,initializer_list也是一种模板类型。
template< class T >
class initializer_list;
1
2
要介绍initializer_list的使用,有必要先谈一谈列表初始化。
C++11扩大了初始化列表的适用范围,使其可用于所有内置类型和用户定义的类型。无论是初始化对象还是某些时候为对象赋新值,都可以使用这样一组由花括号括起来的初始值了。使用初始化列表时,可添加=,也可不添加。
//定义一个变量并初始化
int units_sold=0;
int units_sold(0);
int units_sold={0}; //列表初始化
int units_sold{0}; //列表初始化
1
2
3
4
5
6
当初始化列表用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化值存在丢失信息的风险,则编译器将报错:
long double ld=3.1415926536;
int a={ld},b