目录
写在前面
c++11标准中,initializer_list对于标准库的编写影响非常大,说一个简单的例子,在c++11之前,max函数的源程序是这样的:
template <class T> const T& max (const T& a, const T& b);
template <class T, class Compare>
const T& max (const T& a, const T& b, Compare comp); //支持自己编写的比较函数
也就是max函数只能比较两者之间的大小,但是有了initializer_list后,c++11标准库中添加另外一种实现方式:
template <class T> T max (initializer_list<T> il);
template <class T, class Compare>
T max (initializer_list<T> il, Compare comp);
这就说明,c++11之后,max函数可以传递更多的参数,栗子:
cout << max({ 54,16,48,5 }) << endl; //输出54
可以说:initializer_list是某种类型的数组,但是内部数据都是const T类型,可以整体作为参数传递,由{}进行初始化
详述
c++11中统一了初始化列表(Uniform Initiaization),即均可以使用{}来对对象进行初始化。例如:
int value[]{1,2,3};
vector<int> v{2,3,4,5,6,7};
vector<string> cities{"Beijing&