传递可变数量的实参

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 }  
View Code

补充: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 }  
View Code

 

 

三、省略符形参

呸。辣鸡!

 

四、可变参数模板

以上是关于传递可变数量的实参的主要内容,如果未能解决你的问题,请参考以下文章

Python 传递任意数量的实参

python随笔12(传递任意数量的实参)

Python ❀ 函数

Python ❀ 函数

matlab 中关于 varargin 参数

java深入了解JAVA可变长度的参数