什么是 C++11 的 initializer_list 形参

C++11 的 initializer_list 形参是 C++11 新增的一种参数类型,它允许函数接受一个可变数量的实参,这些实参可以是任意类型,只要它们都有相同的类型。它的定义是:initializer_list,其中 T 是一个模板参数,表示存储在 initializer_list 中的元素的类型。

initializer_list 形参的使用

1、定义函数:使用 initializer_list 形参定义函数,语法如下:

void func(std::initializer_list il);
C++

其中 T 是一个模板参数,表示存储在 initializer_list 中的元素的类型。

2、调用函数:调用函数时,可以使用以下语法:

func({arg1, arg2, ...});
C++

其中 arg1, arg2, ... 是函数实参,它们的类型必须与 T 一致,否则编译器将报错。

3、使用 initializer_list:函数体内可以使用 for 循环遍历 initializer_list,语法如下:

for(auto iter=il.begin(); iter!=il.end(); ++iter) {
    // do something
}
C++

其中 il 为函数形参,iter 为遍历 initializer_list 的迭代器,每次循环可以获取一个实参。

initializer_list 形参的优点

1、使用简单:使用 initializer_list 形参定义函数,调用函数时只需要将实参放入花括号中,使用起来非常方便。

2、可变参数:initializer_list 形参可以接收可变数量的实参,而不需要定义多个形参,可以极大地简化函数定义。

3、安全性:使用 initializer_list 形参定义函数,可以检查实参的类型,从而保证函数的安全性。