给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);
}
};