一、模板模板參數(shù)
一薄嫡、模板模板參數(shù)
考慮在類模板中氧急,有成員變量 : vector<T> myt;
template<typename T>
class Test
{
public:
void setMyt(T t)
{
myt.push_back(t);
}
T getMyt(size_t i)
{
return myt[i];
}
public:
vector<T> myt;
};
int main()
{
Test<int> t;
t.setMyt(1);
cout << t.getMyt(0) << endl;
return 0;
}
vector 實際上是一個類模板,現(xiàn)在考慮毫深,把類似vector, list 的類模板吩坝,當(dāng)作模板參數(shù),傳入一個類模板中:
- 此處的 Container 即是模板模板參數(shù)
- vector 和 list哑蔫,作為模板模板參數(shù)時钉寝,因為編譯器無法確定默認(rèn)的 allocator<T> 缺省參數(shù),需要使用 using 設(shè)定包含vector 和 list 缺省參數(shù)的類型闸迷,將此類型作為模板模板參數(shù)嵌纲。
template<typename T>
using MyVec = vector<T, allocator<T> >;
template<typename T>
using MyList = list<T, allocator<T> >;
template <typename T, template<typename> class Container>
class Test
{
public:
void setMyt(T t)
{
myt.push_back(t);
}
T getMyt(size_t i)
{
return myt.back();
}
public:
Container<T> myt;
};
int main()
{
Test<int, MyVec> t;
t.setMyt(1);
cout << t.getMyt(0) << endl;
Test<char, MyList> tlist;
tlist.setMyt('a');
cout << tlist.getMyt(0) << endl;
return 0;
}