而不是使用
std::vector
我希望它是
MyArray
保留所有std :: vector方法.(比如push_back(),reserve(),...等)
但是,使用
typedef std::vector MyArray;
不行.我应该使用模板吗?怎么样?
你真正想要的是模板化的typedef.不幸的是,当前版本的C++不支持这些,但它们将在C++ 0x中添加.
目前,这是一个可能的解决方法:
templatestruct My { typedef std::vector Array; }; My
无论这是否比直接使用更好std::vector
,我会留给你决定.
从C++ 11开始,您可以使用模板化类型别名
templateusing MyArray = std::vector ;
如果你想更通用,你可以使用一个可变参数模板(在矢量的情况下允许分配器,而不必具体)
templateusing MyArray = std::vector ;
其他方式:
#includetemplate struct MyArray :std::vector { }; void func() { MyArray my; my.push_back(5); MyArray ::iterator i; }
为我编译,但你可能会发现vector <>中的某些东西需要"拉上"到MyArray中.