使用的时候形如一个大括号初始化器,如下:
vector<double>t{1.1, 2.2};
原理是,容器类包含一个使用initializer_list<T>作为参数的构造函数,例如,vector<double>类包含一个initializer_list<double>的构造函数:
vector<double>t({1.1, 2.2});
其中{1.1,2.2}就是initializer_list<double>,一般省略()。
和大括号初始化器有二义性时候的优先级:
vector<int>v(10); //创建10个未初始化元素的vector
vector<int>v({10}); //初始化为一个值为10的元素的vector
vector<int>v{10}; //优先选择initializer_list,即第二种
initializer_list在头文件initializer_list中提供,其实是一个模板类,包含begin(),size()等方法,可以像其他模板类一样使用,注意其迭代器类型是const,不能修改