模板与泛型 —— 模板模板参数

2020-06-14  本文已影响0人  从不中二的忧伤
一、模板模板参数

一、模板模板参数

考虑在类模板中,有成员变量 : 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 实际上是一个类模板,现在考虑,把类似vector, list 的类模板,当作模板参数,传入一个类模板中:

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;
}
上一篇下一篇

猜你喜欢

热点阅读