关于任意个数参数的实现方式

it2023-07-25  72

对于一个给定的函数而言,参数的个数个类型都是确定的,如果在某些情况下想要是实现参数个数任意应该怎么处理呢?

分为两种情况:

参数类型一致参数类型不定

对于参数类型一致的情况,可以采用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更为方便一些。

最新回复(0)