对于一个给定的函数而言,参数的个数个类型都是确定的,如果在某些情况下想要是实现参数个数任意应该怎么处理呢?
分为两种情况:
- 参数类型一致
- 参数类型不定
对于参数类型一致的情况,可以采用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更为方便一些。