[离谱答案]16.1 (C++)

给C++提供类似可变长参数的功能
请实现类Args,支持10个以内参数,使得main函数能运行正确。

OUTPUT

100
1
2
3
4
5
6
7
8
9
hello
good
morning
bye

主程序 (不能修改)

#include <iostream>
#include <string>
#include <vector>
using namespace std;

#include "source.cpp"

void test(int arg1, vector<int> args1, string arg2, vector<string> args2) {
    cout << arg1 << endl;
    for (int i = 0; i < args1.size(); ++ i) {
        cout << args1[i] << endl;
    }
    cout << arg2 << endl;
    for (int i = 0; i < args2.size(); ++ i) {
        cout << args2[i] << endl;
    }
}

int main() {
    test(100, Args<int>(1,2,3,4,5,6,7,8,9), "hello", Args<string>("good", "morning", "bye"));
}

我的答案

template<typename T>
class Args{
private:
    vector<T> a;
public:
   Args(T a1,T a2,T a3,T a4,T a5,T a6,T a7,T a8,T a9){
       a.push_back(a1);
       a.push_back(a2);
       a.push_back(a3);
       a.push_back(a4);
       a.push_back(a5);
       a.push_back(a6);
       a.push_back(a7);
       a.push_back(a8);
       a.push_back(a9);
   }
       Args(T a1,T a2,T a3){
       a.push_back(a1);
       a.push_back(a2);
       a.push_back(a3);

   }
    operator vector<T>(){
        return vector<T> (a);
    }
};
上一篇: 17.1 (C++) 下一篇: [离谱答案]C.3
支持 makedown语法