C++编程语言之initializer_list是C++11提供的一种新类型,其定义于<initializer_list>头文件中,此头文件是工具库的一部分,用于处理参数数量可变但类型相同的情况。initializer_list提供如下操作:
initializer_list<T> lst; //默认初始化;T类型元素的空列表 initializer_list<T> lst{a, b, c, d, ...}; //lst的元素数量和初始值一样多;lst的元素是对应初始值的副本;列表中的元素是const lst.size(); //列表中的元素数量 lst.begin(); //返回指向lst中首元素的指针 lst.end(); //返回指向lst中尾元素下一个位置的指针
C++语言之应用initializer_list实现可变参数的函数示例如下:
#include <iostream> #include <initializer_list> using namespace std; int sum(initializer_list<int> il) { int result = 0; for(initializer_list<int>::iterator it = il.begin(); it != il.end(); it++) { result = result + *it; } return result; } int main() { cout << sum({1}) << endl; cout << sum({1,2}) << endl; cout << sum({1,2,3}) << endl; cout << sum({1,2,3,4}) << endl; cout << sum({1,2,3,4,5}) << endl; return 0; }
可变参数函数initializer_list实现挺好用的,方便啊,比C语言的显得高大上一点。