如何typedef模板类?

我应该如何input一个template class ? 就像是:

 typedef std::vector myVector; // <--- compiler error 

我知道有两种方法:

 (1) #define myVector std::vector // not so good (2) template<typename T> struct myVector { typedef std::vector<T> type; }; // verbose 

在C ++ 0x中我们有更好的吗?

是。 它被称为“ 别名模板 ”,它是C ++ 11中的一个新特性。

 template<typename T> using MyVector = std::vector<T, MyCustomAllocator<T>>; 

然后,用法将与您的预期完全相同:

 MyVector<int> x; // same as: std::vector<int, MyCustomAllocator<int>> 

海湾合作委员会自4.7以来一直支持它,铿锵从3.0开始。

在C ++ 03中,你可以inheritance一个类(公开或私人)来这样做。

 template <typename T> class MyVector : public std::vector<T, MyCustomAllocator<T> > {}; 

你需要做更多的工作(具体来说,复制构造函数,赋值操作符),但它是相当可行的。