对于一个给定的函数而言,参数的个数个类型都是确定的,如果在某些情况下想要是实现参数个数任意应该怎么处理呢?
分为两种情况:
参数类型一致参数类型不定对于参数类型一致的情况,可以采用Initializer_list的方式来实现,示例代码如下:
void print(std::initializer_list<int> vals) { for (auto it=vals.begin(); it!=vals.end(); ++it) { std::cout << *it << std::ends; } std::cout << std::endl; } print({1,2,3,4,5,6,7,8});//调用此函数注意一下与普通函数的区别:
void print(std::initializer_list<int> vals) { for (auto it=vals.begin(); it!=vals.end(); ++it) { std::cout << *it << std::ends; } std::cout << std::endl; } void print(int ia, int ib) { std::cout << ia << std::ends << std::endl; } print(1,2); print({1,2});对于参数类型不一致的情况,可以采用tuple的方式来实现;除此之外还可以采用…的方式,不过…一般用于模板中,对于一般的函数而言,使用tuple更为方便一些。