1. {}初始化
struct Point
{
int _x;
int _y;
};
int main()
{
int x1 = 1;
int x2{ 2 };
int array1[]{ 1, 2, 3, 4, 5 };
int array2[5]{ 0 };
Point p{ 1, 2 };
// C++11中列表初始化也可以适用于new表达式中
int* pa = new int[4]{ 0 };
return 0;
}
2. initializer_list 的介绍🖊
🍎① 使用initializer_list
的对象时必须加上头文件 #include <initializer_list>
;
🍎② initializer_list
的作用能够将一系列值传递给构造函数或者其他函数;下面这段函数采取值传递的方式对效率的影响不大。
// 如果没有 vector(initializer_list<T> il),我们要向下面一样写很多个构造函数。
vector(const T& x1)
vector(const T& x1, const T& x2)
vector(const T& x1, const T& x2, const T& x3)
vector(const T& x1, const T& x2, const T& x3, const T& x4)
...
🍎③ 所有的容器都支持 initializer_list
的构造, 这里{"sort", "排序"}
会先初始化构造一个 pair
对象 map<string, string> dict = { {"sort", "排序"}, {"insert", "插入"} };
🍎④ initializer_list
有两个指针,一个指针指向 initializer_list
的第一个元素,另一个指针指向最后一个元素的后一个位置。 在 32 位机器下sizeof ( il2 ) 为 8,64 位机器下为 16。