zoukankan      html  css  js  c++  java
  • 传递可变数量的实参

    一、关键点

    目的:一个函数,可以处理不同数量实参

    方法: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 << "传递两个实参:
    "; 
    21     print({1,2});
    22     cout << "传递三个实参:
    ";
    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 << "传递两个实参:
    "; 
    20     print({1,2});
    21     cout << "传递三个实参:
    ";
    22     print({1,2,3}); 
    23     return 0;  
    24 }  
    View Code

    三、省略符形参

    呸。辣鸡!

    四、可变参数模板

  • 相关阅读:
    MillerRabin
    BM算法总结
    高斯消元处理自由变元的方法
    [IOI2019]矩形区域
    费用流处理负圈的方法
    回文自动机(PAM)总结
    [TJOI2017]龙舟
    luogu P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈
    博弈论
    构造
  • 原文地址:https://www.cnblogs.com/xzxl/p/7660016.html
Copyright © 2011-2022 走看看