1. 初始化列表
在 C++98 标准中,允许使用花括号 { } 对数组或者结构体元素进行统一的列表初始化。
例如:
struct Point{ int a; int b; };
int main(){
int arry[] = {1,2,3,4}; // 数组初始化
Point p = {1,2}; // 结构体初始化
return 0;
}
而 C++11 扩大了使用花括号 { } 进行初始化的使用范围,使其可以用于所有的内置类型和用户自定义的类型。
// 对数组初始化
int arry1[]{1,2,3,4,5};
// 对内置类型初始化
int x{9};
// 对用户自定义类型初始化
Point p{9,9};
// 对 vector 容器对象进行初始化
vector<int> vec = {1,2,3,4,5,6,7,8,9};
注意:
使用初始化列表时,可以添加等号 =,也可以不添加。
2. std::initializer_list
std::initializer_list 是一个轻量级的模板类,用于在函数参数中传递初始化列表,从而使编译器能够正确解析和处理使用花括号 {} 进行初始化的对象。
它在诸多容器的构造中都可以看见它的身影,例如 和 的构造。它是定义在 头文件中的一个模板类,用于表示一个初始化列表。


