传递可变数量的实参
Posted GGBeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传递可变数量的实参相关的知识,希望对你有一定的参考价值。
一、关键点
目的:一个函数,可以处理不同数量实参
方法:initializer_list形参、可变参数模板、省略符形参
二、initializer_list形参
适用于:可变数量的实参部分的类型相同
简介:initializer_list是一种标准库类型,用于表示某种特定类型的值的数组
特点:模板类型,该类型的对象中的元素是常量值(我们无法改变该类型对象中元素的值)
注意:要向该形参中传递一个值的序列,必须把序列放在一对花括号中
示例:
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <string> 5 #include <initializer_list> 6 7 using namespace std; 8 9 void print(initializer_list<int> a) 10 { 11 for (auto i : a) 12 cout << i << " "; 13 cout << endl; 14 } 15 16 17 18 int main() 19 { 20 cout << "传递两个实参:\n"; 21 print({1,2}); 22 cout << "传递三个实参:\n"; 23 print({1,2,3}); 24 return 0; 25 }
补充:initializer_list类型不仅仅可以在形参部分使用,它作为一个类,自然有属于自己的成员函数。
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <string> 5 #include <initializer_list> 6 7 using namespace std; 8 9 void print(initializer_list<int> a) 10 { 11 cout << "此次传来" << a.size() << "个可变参数" << endl; 12 for (auto it = a.begin(); it != a.end(); it++) 13 cout << *it << " "; 14 cout << endl; 15 } 16 17 int main() 18 { 19 cout << "传递两个实参:\n"; 20 print({1,2}); 21 cout << "传递三个实参:\n"; 22 print({1,2,3}); 23 return 0; 24 }
三、省略符形参
呸。辣鸡!
四、可变参数模板
以上是关于传递可变数量的实参的主要内容,如果未能解决你的问题,请参考以下文章