#include<list>
#include<vector>
#include<iostream>
using
namespace
std;
/*
如果有一个需求是在自定义类中使用某种类型(T)元素,固定容器(vecter)
*/
template
<
class
T>
class
ClassA
{
public
:
vector<T> vecT;
};
//如果需求变成在自定义类中使用固定类型(int)元素,不同容器呢?
template
<
class
SpecificContainer>
class
ClassB
{
public
:
SpecificContainer cerT;
};
//这样不觉得笨拙么每次使用的时候实际是要重复输入这个固定的类型int元素
//这样一个东西你觉得怎么样?
template
<
template
<
class
T,
class
= allocator<T>>
class
Container>
class
ClassC
{
public
:
Container<
int
> cerInt;
};
template
<
class
T,
template
<
class
T,
class
Ax = allocator<T>>
class
Container>
class
Class
{
public
:
Container<T> veclist;
};
int
main()
{
//容器类型固定
ClassA<
int
> nameA;
nameA.vecT.push_back(1);
cout << nameA.vecT.front() << endl;
//元素类型固定
//现在只能这样做
ClassB<list<
int
>> nameB;
nameB.cerT.push_back(1);
cout << nameB.cerT.front() << endl;
//这样是不是清爽多了
ClassC<vector> nameC;
nameC.cerInt.push_back(1);
cout << nameC.cerInt.front() << endl;
//这样又是多此一举了?
Class<
int
, list> name;
name.veclist.push_back(1);
cout<<name.veclist.front() << endl;
return
0;
}
容器类型固定的时候直接使用类template,但是要在固定元素类型的时候选择不同类型的容器,使用template template是最为方便的